0

我正在使用 JQuery 插件customSelect() http://adam.co/lab/jquery/customselect/来设置下拉框的样式。

如果我在相同的元素上多次初始化脚本,它们就会停止工作。我需要找出一种方法,只在通过 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附加到 my之后div,我将遍历每个<select>元素,确定它是否已经包含 class hasCustomSelect,如果没有,则为该元素初始化插件。

然而,这似乎没有达到预期的效果,事实上,它正在产生一个错误。可能有几种方法可以查看是否已应用插件,但我认为检查添加的默认类是否足够。

4

1 回答 1

1

为你的每个人试试这个:

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

或者...

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

您收到错误的原因是因为第一个参数$.each(...是对象集合,而不是选择器。

于 2013-10-21T18:56:07.850 回答