2013-10-21 24 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

相关问题