添加和删​​除类时面临奇怪的问题

我有以下function,用于初始化小部件。

jQuery.fn.initPortlet = function( parent_component ,header , component ){ var o = $(this[0]) this.addClass("ui-widget ui-widget-content ui-corner-all") .find(header) .addClass("headertitle") .addClass("align_center") .addClass("defaultheadercolor") .prepend('') .end() .find(component); }; 

它的作用是在小部件的左上角附加一个减号图标。 我有一些ajax调用因为多次调用此函数并多次附加一个减号图标。

我想以这种方式重新编写这个函数,以便调用它的次数,只在头部附加一个减号图标。
我尝试了rest方法,但它没有奏效。

 var $minusthick = $('span.ui-icon ui-icon-minusthick'); $('div.div_header').find($minusthick).remove().prepend('').end(); 

我要删除的是使用类名span.ui-icon ui-icon-minusthick删除所有span,最后添加一个减号图标,但它对我不起作用。

编辑我以这种方式调用此function –

 $('.div_portlet').initPortlet('.div_portlet','.div_header','.div_content') $('.div_portlet_inner').initPortlet('.div_portlet_inner','.div_header_inner','.div_content_inner'); 

对应于此的html是 –

HTML:

 
Line Item Header Information

对于第二次调用html将保持相同只是类将从div_portlet更改为div_portlet_inne r,对于其他类也是如此。 我已经在js文件中写了这个函数。

任何帮助或建议,以便我能实现我的目标将受到高度赞赏。 请伙计们帮我解决这个问题。 提前致谢!!!!!

不确定正在使用什么变量o – 但下面我的更改的一般要点是使用jQuery hasClass()函数检查该类是否已经应用。

 jQuery.fn.initPortlet = function( parent_component ,header , component ){ var o = $(this[0]) if (!this.hasClass('ui-widget')) { this.addClass("ui-widget ui-widget-content ui-corner-all") .find(header) .addClass("headertitle") .addClass("align_center") .addClass("defaultheadercolor") .prepend('') .end() .find(component); } }; 

ʞɔɐɯɹoↃɔWsǝɯɐs为这个问题提供了一个很好的解决方案,但这里有一个解释为什么你的尝试不起作用:

选择器'span.ui-icon ui-icon-minusthick'的第一部分正在寻找带有类ui-iconspan ,如你所愿,但第二部分寻找类型为的元素这显然不存在。 要选择具有多个类名的元素,请将它们全部添加到同一个选择器中,就像在CSS中一样:

 $('span.ui-icon.ui-icon-minusthick') 

当然,你的其他代码将是一个无操作,因为find($minusthick)将什么都不做,因此jQuery链的其余部分将没有操作的上下文。 这将(我认为)按预期工作:

 $('div.div_header').find('span.ui-icon.ui-icon-minusthick').remove().end().prepend(''); 

额外的end()调用将jQuery对象返回给第一个选择器,在本例中为div.div_header并且不需要最终的end()