0

我正在使用 jquery live 函数在页面上创建多个小部件,使用...

$('#mybutton').live('click', function(){
var first = $('#win-doors-pvc fieldset:first').html();   
$(first).find('select option:selected').attr('selected',false);   
$('#win-doors-pvc').append('<fieldset>'+first+'</fieldset>');
});

上面的代码成功地在字段集中重新创建了内容。

带有 var 的内容首先包含一个选择控件。我想通过使用来操纵该选择

$(first).find('select option:selected').attr('selected',false); 

取消选择已选择的内容。

为什么它不起作用?

4

1 回答 1

1

http://jsfiddle.net/4MEbU/

$('#mybutton').live('click', function(){
var first = $('#win-doors-pvc fieldset:first');   
first.find('select option:selected').attr('selected',false);   
$('#win-doors-pvc').append('<fieldset>'+first.html()+'</fieldset>');
});

您的代码不起作用,因为您这样做了

var first = $('#win-doors-pvc fieldset:first').html();  

thenfirst是一个包含 html 的字符串,因此$(first)给出一个空对象。

而不是这个,first应该是对元素的引用(不是它的 html 代码):

var first = $('#win-doors-pvc fieldset:first');  

所以first.find('select option:selected').attr('selected',false);效果很好。

当你想要它的 html 代码时,只需使用first.html()

$('#win-doors-pvc').append('<fieldset>'+first.html()+'</fieldset>')

编辑

如果您希望新元素具有与第一个相同的optionselected元素,则select可以移动自身:

$('#mybutton').live('click', function(){
    var first = $('#win-doors-pvc fieldset:first');
    $('#win-doors-pvc').append(first);
    $('#win-doors-pvc').prepend(first.clone(true,true));
});
​

在这里看到它:http: //jsfiddle.net/4MEbU/3/

于 2012-08-15T13:40:13.853 回答