0

我试图不止一次地调用一个插件,但它在第一次之后就再也不起作用了。

奇怪的

在我的代码中,我有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

尝试添加电影,然后添加另一个

4

1 回答 1

2

你的问题是这段代码:

$("#optionalSearchOptions ul")

在创建第一个 select2 作为其标记的一部分后,它会添加一个 ul。所以现在您的选择器与添加的标记 select2 中的 ul 匹配,第二个 select2 在第一个中创建。

相反,你应该说

$("#optionalSearchOptions>ul")

意思是匹配作为选项 div 的直接子级的 ul。或者在 ul 上抛出一个类以使其不那么脆弱。

看到它在这里与直接子选择器一起工作并且你的小提琴被清理了:http: //jsfiddle.net/MfJ4B/9/

于 2013-05-31T00:12:07.173 回答