我试图不止一次调用一个插件,它在第一次之后就无法工作了。
奇怪
在我的代码中,我在ul
内有一个div
。
<div id="#optionalSearchOptions"> <ul> </ul> </div>
所以我还有一些其他代码附加到:
$("#optionalSearchOptions ul").append("<li>
<div class='button' style='position:relative'>
<select id='"+ id+"' style='width:200px'> <option></option></select></div></li>");
这样可以。
因此,要知道何时附加到ul
,每次运行追加时都会设置触发器。
$(window).trigger('convertBoxes',[id,title]);
在document.ready
内我听取了触发器。
$(window).on('convertBoxes', function (event, param1, param2){
var tmpName = "#" + param1 ;
newSelect2(tmpName, param2);
});
因此,对于每个新创建的li
,都会运行newSelect2
函数。
这是函数newSelect2
:
function newSelect2(id, name) {
console.log(id);
$(id).select2({
placeholder: name
});
}
这应该为每个新的li
运行select2
插件 - 但它只是第一次运行它,我不知道为什么。
有人可以帮忙吗?
这是一个js小提琴 - http://jsfiddle.net/dwhitmarsh/MfJ4B/5
尝试添加电影,然后添加另一个
答案 0 :(得分:2)
你的问题是这段代码:
$("#optionalSearchOptions ul")
在第一个select2作为其标记的一部分创建后,它会添加一个ul。所以现在你的选择器匹配标记select2中的ul,第二个select2在第一个中创建。
相反,你应该说$("#optionalSearchOptions>ul")
意思是匹配一个ul,它是选项div的直接子节点。或者在ul上抛出一个类,使它不那么脆弱。
看到它与直接子选择器和你的小提琴清理工作: http://jsfiddle.net/MfJ4B/9/