2011-05-24 93 views
5

可能重複:
Facing weird problem while adding and removing class.如何找到一個html元素,然後刪除它?

假設我有以下HTML -

 <div class="div_portlet ui-widget ui-widget-content ui-corner-all defaultcontentbg portlet-width default_border default_border_color portlet_space"> 
    <div class="div_header headertitle align_center defaultheadercolor portlet-header-left-padding default_bottom_border default_border_color"> 
    <span class="ui-icon ui-icon-minusthick"></span> 
     Order Header Level Information</div> 
     <div id="ordrHdrLvnInfn" class="div_content portlet-width"> 

我所試圖做的是,檢查是否帶班跨度ui-icon ui-icon-minusthick是否存在,如果存在,先刪除它然後添加它。我試着在下面的方式,但它不工作

javascript函數::

jQuery.fn.initPortlet = function(parent_component ,header , component){ 
     this.find(header).find('span.ui-icon').remove(); 

     this.addClass("ui-widget ui-widget-content ui-corner-all") 
      .find(header)   
      .addClass("headertitle") 
      .addClass("align_center") 
      .addClass("defaultheadercolor") 
      .end() 
      .prepend('<span class="ui-icon ui-icon-minusthick"></span>') 
      .find(component); 
        } 

和我打電話這樣這個功能..

$('.div_portlet').initPortlet('.div_portlet','.div_header','.div_content') 

應該先去除然後添加它,但如果我多次調用此函數,那麼它只是繼續添加該跨度。
我該怎麼做,或者有沒有更好的方法來做到這一點。 謝謝!

+0

一個建議:改變'.addClass( 「headertitle」)addClass( 「ALIGN_CENTER」)addClass( 「defaultheadercolor」)'到單線'addClass( 「headertitle ALIGN_CENTER defaultheadercolor」)' – diEcho 2011-05-24 11:02:56

+0

。 @ mplungjan - 你能解釋一下嗎?你想要說什麼? – Vivek 2011-05-24 11:08:16

+0

你有小提琴嗎?網頁上有多個div_portlets嗎? – 2011-05-24 11:08:23

回答

3

您正在將div添加到div_header之外。您的.end()意味着您不再使用您的標題過濾器,因此跨度被添加到您的ui_widget的開頭...

http://jsfiddle.net/Qjrcg/是您的代碼的小提琴。如果你看,我已經在prepend後面註釋掉了.end()。如果您取消註釋並註釋掉較早的那個,那麼跨度(我將測試文本放入以便於查看)只創建一次。

希望這應該讓你感到滿足。

+0

感謝哥們,但這只是一個錯字錯誤 – Vivek 2011-05-24 11:12:42

+0

你能澄清你的意思嗎?移動結尾會導致創建大量跨度(如http://jsfiddle.net/Qjrcg/)和一個跨度(如http://jsfiddle.net/Qjrcg/1/中所示)之間的差異。如果這不是你想要的,那麼你能澄清一下嗎?這第二個代碼似乎是刪除跨度,然後讀取它。將隨機數放入span(http://jsfiddle.net/Qjrcg/2)時,這是清晰可見的。 – Chris 2011-05-24 11:24:18

+0

是的,謝謝你的努力...是的,你是寫我也在我的jsfile也犯了同樣的錯字錯誤。非常感謝.. – Vivek 2011-05-24 11:27:25

1

我認爲這個問題是在你第一次發現

this.find(header).find('span.ui-icon').remove(); 

你正在努力尋找標題中的圖標,但你在前面加上一個圖標到portlet(這)

.prepend('<span class="ui-icon ui-icon-minusthick"></span>') 

所以試試這個

this.find('span.ui-icon').remove(); 

看看我對克里斯的小提琴做的更新:http://jsfiddle.net/Qjrcg/5/

HTH

相關問題