jQuery插件replaceElements替换整个文档中的所有元素

时间:2013-05-22 09:11:06

标签: jquery list replace html-lists

我想在div-p-“list”(div#menu)中替换ul-li-list(ul#menu)。这意味着ul变为div而li变为p-tag。

问题:我发现的插件替换了整个文档(DOM)中的所有ul-li列表。

每个人都可以帮我改变插件代码,用#menu替换唯一的列表吗?

replaceElements插件:

    ;(function($) {
    jQuery.fn.replaceElements = function(arg,callback) {


      var options = $.extend({},$.fn.replaceElements.defaults,arg,{callback:callback}); 

        return this.each(function() {
            var obj = $(this).parent;
            replace(options,obj);
        });

    };

    function replace(opts,obj) {
        for (var i in opts) {
            $(obj).find(i).each(function() {    
                var thisElement = $(this);
                thisElement.wrapInner("<"+ opts[i] +" />");
                var attr = jQuery.getAttributes(thisElement,true);
                if(attr) {
                    thisElement.children().attr(attr);
                }
                thisElement.children().unwrap();                                                         
            });
        }
        callFn(opts.callback);
    };

    function callFn(callback) {
        if($.isFunction(callback)){
        callback.call(this);
    }
    };

    $.fn.replaceElements.defaults = {
    ul: 'div',
    li: 'p'
  };
})(jQuery);

拨打:

$(document).ready(function (){
    $("#mainmenu").replaceElements({},function(){
        columnnav($("#menu"));
    }); // Ende replaceElements mit Callback Funktion
});

列表 - 示例

<ul id="menu">
 <li>Link1</li>
 <li>Link2</li>
 <li>Link3
   <ul>
     <li>Sublink1</li>
   </ul> 
 </li>
</ul>

好的,到目前为止 - 谢谢你的帮助!

大卫

PS:我认为突破点在这一行,不是吗?

            var obj = $(this).parent;

0 个答案:

没有答案