2013-10-21 30 views
0

我使用JQuery插件customSelect()http://adam.co/lab/jquery/customselect/樣式下拉框。將JQuery插件應用到通過AJAX插入到DOM中的新元素使用每個()

如果我在相同的元素上多次初始化腳本,它們將停止工作。我需要找出一種方法來初始化通過AJAX插入到DOM中的新創建元素上的插件。

所以,我初始化所有的下拉菜單(預期的效果) -

$('select').customSelect(); 

和元素,我選擇這個插件工作都給予了類「hasCustomSelect」,像這樣

<select class="hasCustomSelect"></select> 

,但如果我初始化兩次 -

$('select').customSelect(); 
$('select').customSelect(); 

它將從字面上停止工作。

因此,在我的AJAX請求中,我將它初始化爲沒有這個類的元素,但它似乎沒有工作。這裏是AJAX -

$.ajax({ 
    type: 'POST', 
    url: 'wp-content/themes/themetitle/functions/get-child.php', 
    data: { childID : theID, URL : theURL, classlevel : classlevel }, 
     beforeSend:function() { 

     }, 
     success:function(data) { 
      $('#makesort').append(data); 
      makesort(); 
      $.each('select', function() { 
       if($(this).hasClass('hasCustomSelect')) { 
        //DO NOTHING! 
       } else { 
        $(this).customSelect(); 
       } 
      }); 
     }, 
     error:function() { 

     } 
    }); 

所以,我有想到的是data後追加到我的div,我會去通過每個<select>元素,確定它是否已經包含了類hasCustomSelect,如果沒有,然後初始化此元素的插件。

但是,這似乎並沒有達到預期的效果,實際上,它會產生錯誤。可能有幾種方法可以查看插件是否已經被應用,但是我想查看是否已經添加了默認類。

+0

你提到的錯誤是什麼? – mayabelle

+0

它會產生一個典型的差語法錯誤,比如Jquery.min.js中的「無法定義null的頂部」,這讓我相信這是一個語法錯誤,比我缺少一個括號或使用'each'錯誤。 – RCNeil

回答

1

試試這個你每個:

$('select:not(.hasCustomSelect)').each(function() { 
    $(this).customSelect(); 
}); 

或...

$.each($('select:not(.hasCustomSelect)'), function() { 
    $(this).customSelect(); 
}); 

你得到一個錯誤的原因是因爲$.each(...第一個參數是對象的集合,而不是一個選擇器。

+0

uhhhhhhhhhhh,完美!我認爲這是一種類型的語法錯誤。馬克馬上回答。感謝您的解釋! – RCNeil

+0

不客氣!順便說一句,有一種方法可以將答案標記爲「接受」,這與投票不同。 :) – mayabelle

+0

我知道,我說我會馬克回答儘快。它讓你等待;) – RCNeil

相關問題