Javascript 删除<;选项>;当自定义属性不等于x时 我所拥有的:
我有一个select元素。有些选项既有类(Javascript 删除<;选项>;当自定义属性不等于x时 我所拥有的:,javascript,jquery,html,Javascript,Jquery,Html,我有一个select元素。有些选项既有类(.filterable_option)又有自定义属性(数据客户端urn) 我需要的是: 根据另一个元素的on change事件,我需要从select元素中删除以下选项: …被归类为.filterable\u选项 …数据customattribute值不等于预定义变量的值(var=$some\u value) 我的代码: HTML: <select name="myselect_a"> <option selected="sele
.filterable_option
)又有自定义属性(数据客户端urn
)
我需要的是:
根据另一个元素的on change事件,我需要从select元素中删除以下选项:
.filterable\u选项
var=$some\u value
)<select name="myselect_a">
<option selected="selected"></option>
<option value="Apply filter">Apply filter</option>
</select>
<select name="myselect_b">
<option selected="selected"></option>
<option data-customattribute="58" value="1" class="filterable_option">Dog</option>
<option data-customattribute="58" value="2" class="filterable_option">Cat</option>
<option data-customattribute="60" value="3" class="filterable_option">Parrot</option>
<option>I have no class or custom attribute.</option>
</select>
$('#myselect_a').on('change', function() {
var $myselect_a_option = $("#myselect_a").val();
if($myselect_a_option === 'Apply filter'){
var $some_value = '58';
$("select[name=myselect_b] option.filterable_option[data-customattribute!=" + $some_value + "]").remove();
}
});
JSFiddle:
为方便起见:
我的问题是:
我的代码没有删除选项中所需的。什么也没有发生。您在选择器中使用了一个名称。改为使用id,如下所示
<select id="myselect_a">
<option selected="selected"></option>
<option value="Apply filter">Apply filter</option>
</select>
您选择的选择器错误,以下位也已更正:
name='myselect\u b']
演示:
请参见标记中的“名称”属性:
<select name="myselect_a">
这就是问题所在。+1对于问题的陈述,正如Neel所说的+1对于陈述,对于一个如此简单的错误,这是一个非常好的陈述;)是的,我不知道为什么有人否决了你。要么更改select属性,要么更改选择器。@Neel不确定您的意思,但是
.on()
适用于自1起的所有jQuery版本。7@ClarusDignus指定一个ID不仅对性能很有用,而且它允许元素被锚定,并允许标签引用它们。@Matthew-谢谢。根据您的回答,我将修改我的方法,并放弃在名称已经存在时避免定义ID。@Neel-确实如此。我只想花点时间审慎地考虑一下哪位议员最能回答我的问题。它可能是选择器的OCD:-)+1的潜在形式,但属性选择器不需要引号。如果属性值包含多个单词,则需要引号。使用它,这是一种很好的实践。@a.Wolff这不是一个动态值,我应该说是这个属性selector@RGraham是的,我刚刚明白你的意思+1。谢谢你的回答。我选择了尼尔的答案,因为他三分钟前按时间顺序回答了。我最初选择你的答案是因为它遵守了我的标记约定(使用名称而不是ID),但是Neel更新了他的答案,将这两个约定合并在一起。
$('select[name="myselect_a"]').on('change', function() {
var $myselect_a_option = $(this).val();
if($myselect_a_option === 'Apply filter'){
var $some_value = '58';
$("select[name='myselect_b'] option.filterable_option[data-customattribute!=" + $some_value + "]").remove();
}
});
<select name="myselect_a">
$('#myselect_a')