jquery
  • plugins
  • jquery-select2
  • 2013-05-30 81 views 0 likes 
    0

    我想多次調用一個插件,並且它在第一次之後永遠不會工作。不止一次調用插件的奇怪行爲

    奇怪

    在我的代碼,我有一個div內的ul

    <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

    哪裏是「_So當我追加到UL觸發設置每次追加爲run._知道」這樣做?我沒有在你的代碼中看到它。 – Jared

    +0

    我沒有添加,因爲會很多代碼,但我知道從控制檯日誌,它正在運行 – Dan

    +0

    問題是與select2運行不止一次 - 不明白爲什麼它不是 – Dan

    回答

    2

    你的問題是這樣的代碼:

    $("#optionalSearchOptions ul") 
    

    第一選擇2作爲其標記的一部分創建後它增加了一個ul。所以現在你的選擇器與標記select2中的ul匹配,第二個select2在第一個中創建。

    相反,你應該說

    $("#optionalSearchOptions>ul") 
    

    意味着比賽的UL是選項DIV的直接孩子。或者在ul上拋出一個類,使其不那麼脆弱。

    看到它與直子選擇在這裏工作,你的提琴清理: http://jsfiddle.net/MfJ4B/9/

    相關問題