2012-11-15 46 views
1

我有这样生成的代码:删除的选项标签与JS

<select class="generic-widget" id="auth_user_group_id" name="group_id"> 
<option value=""></option> 
<option value="2">admin</option> 
<option value="3">user</option> 
<option value="1">guest</option> 
</select> 

我需要用JS删除来宾选项,并尝试设置默认的一样,用户选项...

我试着用这个jQuery代码删除客人选择,但一些失败:

<script> 
$('option').each(function(){ 
    if($(this).attr('value') == '1') { 
     $(this).remove(); 
     } 
    }); 
</script> 

回答

1

Removing an item from a select box

删除选项:

$("#auth_user_group_id option[value='1']").remove(); 
+0

此代码完成了这项工作,谢谢 – chespinoza

+0

@Christian_Espinoza:你在说,如果你只是用上面的代码替换你的问题中的代码,那么它突然起作用了?这没有道理。 –

1

什么:

$('#auth_user_group_id > option[value="1"]').remove(); 
+0

不起作用:http://jsfiddle.net/MdGN4/2/ – chespinoza

+0

运行对我来说 - http://jsfiddle.net/MdGN4/7/ – Lloyd

1

只要您在DOM准备好后运行代码,就可以正常工作。

// v----this handler will run after the DOM has loaded 
$(function() { 
    $('option').each(function(){ 
     if($(this).attr('value') == '1') { 
      $(this).remove(); 
     } 
    }); 
}); 

DEMO:http://jsfiddle.net/TTUkS/

如果你的代码放置在页面的顶部,然后才能运行中存在的元素。

+0

这样在我看来更具可读性:'if($(this).val()=='1')...' – Mic

+0

@Mic:我同意,但重点在于OP的代码在写入方式上是正确的。所以代码本身并不需要修复,但*(可能)*只需在DOM准备就绪后运行。 –

0

你可以把值条件的选择:

$('#auth_user_group_id option[value="1"]').remove(); 

然后你可以使用val方法来选择一个选项:

$('#auth_user_group_id').val('3'); 
0

您可以查看选项项的值:

$('option').each(function(){ 
if($(this).val() == '1') { 
    $(this).remove(); 
    } 
});