Jquery plugins jQuery的时尚选择插件不适用于页面加载后创建的元素

Jquery plugins jQuery的时尚选择插件不适用于页面加载后创建的元素,jquery-plugins,jquery,jquery-selectors,Jquery Plugins,Jquery,Jquery Selectors,我一直在努力使用页面加载后创建的元素,但没有成功。为了理解这个问题,您需要首先重新生成它。我知道下面的内容可能有点烦人,但如果你有5分钟的空闲时间,请继续阅读 或者,您可以获得一个完整的示例来直接查看问题 首先,您需要一个元素。现在使用类似$'select'.sSelect;之后,脚本隐藏该元素并在其下方创建一组div。现在,您的页面应该如下所示: <select style="display:none;"> <option>1</option>

我一直在努力使用页面加载后创建的元素,但没有成功。为了理解这个问题,您需要首先重新生成它。我知道下面的内容可能有点烦人,但如果你有5分钟的空闲时间,请继续阅读

或者,您可以获得一个完整的示例来直接查看问题

首先,您需要一个元素。现在使用类似$'select'.sSelect;之后,脚本隐藏该元素并在其下方创建一组div。现在,您的页面应该如下所示:

<select style="display:none;">
    <option>1</option>
    <option>2</option>
</select>
<div class=newListSelected>
    <!-- Some other stuff(not important). -->
</div>
最后,只需调用$'select'.sSelect;再次。它应该在两个元素下都创建div。现在问题来了,由div表示的第一个选择框的行为不正常

或者,您可以获得一个完整的示例来直接查看问题

通常,当您从由div表示的选择框中选择一个选项时,它应该将原始元素的selectedIndex DOM属性更新为所选选项的相应索引第一个选项为0,第二个选项为1。。等等。但如果仔细观察,您会看到它将任何选项的selectedIndex值更改为-1


由于我对Javascript还不太熟悉,我真的不知道它为什么会这样。我可能只想到第一个元素绑定到$'select'.sSelect;两次,从而导致DOM问题。

我认为您不能简单地删除div。为什么不能撤消sSelect呢?我确信存在销毁选项或删除或其他选项,因此请正确删除sSelect,然后重试:

我认为您不能简单地删除div。为什么不能撤消sSelect?我确信存在销毁选项或删除或其他选项,因此请正确删除sSelect,然后重试:

创建元素后,您必须再次调用sSelect函数

$(document).ready(function(){
    $('select').sSelect();
});

$('.add').click(function() {
    $('body').append('<select><option>1</option><option>2</option></select>')
   $('select').sSelect();
});

$('.bind').click(function() {
    $('.newListSelected').remove();
    $('select').sSelect();
});

创建元素后,必须再次调用sSelect函数

$(document).ready(function(){
    $('select').sSelect();
});

$('.add').click(function() {
    $('body').append('<select><option>1</option><option>2</option></select>')
   $('select').sSelect();
});

$('.bind').click(function() {
    $('.newListSelected').remove();
    $('select').sSelect();
});

以下是您的JS的外观:

$(document).ready(function() {
    $('select').sSelect();

    $('.add').click(function() {
        var newSelect =$('<select><option>1</option><option>2</option></select>').appendTo('body');
        $(newSelect).sSelect();
    });

    $('.bind').click(function() {
        $('.newListSelected').remove();
    });
});​

诀窍是使用appendTo而不是append。这将返回新创建的select,因此您可以在其上使用.sSelect。

以下是您的JS的外观:

$(document).ready(function() {
    $('select').sSelect();

    $('.add').click(function() {
        var newSelect =$('<select><option>1</option><option>2</option></select>').appendTo('body');
        $(newSelect).sSelect();
    });

    $('.bind').click(function() {
        $('.newListSelected').remove();
    });
});​

诀窍是使用appendTo而不是append。这将返回新创建的选择,因此您可以在其上使用.s选择。

重置时尚选择功能

$('select').resetSS();

重置时尚选择功能

$('select').resetSS();

在操作选择选项后使用重置功能

$('#sel2').sSelect();

function refresh_select(id){
    $.getJSON("/ajax.php?cat="+id, function(data){
        $("select#sel2").loadSelect(data);    
        $("select#sel2").resetSS();
    });
});

在操作选择选项后使用重置功能

$('#sel2').sSelect();

function refresh_select(id){
    $.getJSON("/ajax.php?cat="+id, function(data){
        $("select#sel2").loadSelect(data);    
        $("select#sel2").resetSS();
    });
});

对我试图找到一种恢复sSelect的方法,但是在jquery.Style-select.js中找不到任何能够这样做的东西:是的。。我试图找到一种恢复sSelect的方法,但是在jquery.Style-select.js中找不到任何可以恢复sSelect的东西:对不起,这不起作用。如果再次调用sSelect而不首先删除DIV元素,则第一个选择框将以多个DIV结尾:抱歉,这不起作用。如果再次调用sSelect而不首先删除DIV元素,则第一个选择框将以多个DIV结尾:您的意思是仅绑定。sSelect;到新创建的select元素?您的意思是仅绑定。sSelect;到新创建的select元素?