jquery strange behaviour
jQuery.fn.initPortlet = function( parent_component ,header , component ){
        v开发者_C百科ar o = $(this[0])
        this.addClass("ui-widget ui-widget-content ui-corner-all")
            .find(header)           
            .addClass("headertitle")
            .addClass("align_center")
            .addClass("defaultheadercolor")
            .prepend('<span class="ui-icon ui-icon-minusthick"></span>')
            .end()
            .find(component);
};
html:
<div class="div_portlet" id="LINEITEM_HEADER" >
<div class="div_header"><%=hu.getFrameURL(82,83)%> Line Item Header Information</div>
            <div class="div_content" id="LINEITEM_HEADER_CONTENT">
            </div>  
</div>
what it does is append a minus icon at the top left corner of the widget. i have some ajax call because of that this function get called multiple time and append a minus icon multiple times.
i am tring to re-write this function in such a way, so that how many time it's get called, append only one minus icon into header.
i tried fallowing approach but it didn't work.var $minusthick = $('span.ui-icon ui-icon-minusthick');
$('div.div_header').find($minusthick).remove().prepend('<span class="ui-icon ui-icon-minusthick"></span>').end();
what i am tring is remove all span with class name span.ui-icon ui-icon-minusthick and finally append a minus icon, but it's not worked for me.
any help or suggestion so that i can achieve my goal will be highly appreciated.
Thanks in advance!!!!!Edit--
solution given below is working fine for one call, but it fails if i am calling this function again with same parameter and it should be and unfortunately i have to call this function several times...how can i do this..i tried lots of thing but it fails somewhere :(:(:(
You can use jQuery.data() to track whether it has already been added:
jQuery.fn.initPortlet = function(parent_component, header, component){
        var o = $(this[0]);
        if ( ! o.data('widgeted')) {
            //  .data('widgeted') will return NULL before it is set.
            //  So the first iteration of the function will execute
            //  this code block.
            this.addClass("ui-widget ui-widget-content ui-corner-all")
                .find(header)           
                .addClass("headertitle align_center defaultheadercolor")
                .prepend('<span class="ui-icon ui-icon-minusthick"></span>')
                .end()
                .find(component);
        }
        //  We set widgeted to true.  Any further calls to this function
        //  (on this DOM node) will not execute the code block above.
        o.data('widgeted', true);
};
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论