jQuery选择框移除除两个以外的所有选项(选择器变量名)

3
我有一个下拉选择框:
<select name="loc_id_1" id="loc_id_1">
<option value="PLS" selected="selected">-- PLEASE SELECT --</option>
<option value="NEW">-- ADD NEW --</option>
<option value="1">Smith Company</option>
<option value="6">Jones Company</option>
<option value="23">Wright Company</option>
</select>

页面上有多个这样的元素,如loc_id_2、loc_id_3等,它们分别包含不同的信息。我使用以下代码来检测它们中任意一个是否发生了变化。

$("[id^=loc_id_]").change(function(){
/// my magic code
var lc_id = $(this).attr('id');
my_function(lc_id,data1,data2);
});

这部分工作很棒。我遇到的问题是,作为这段代码的一部分,我调用了一个可以刷新更改后选择框中的数据的函数。所以我使用jquery的remove函数来刷新选择框。

function my_function(id,d,f) {
var sel = $("#" + id);
sel.find('option[value!="NEW"] option[value!="PLS"]').remove();

// ajax code that calls database to append the other entries to the selectbox
}

问题在于,这样做会移除“ADD NEW”选项,但是“PLEASE SELECT”选项仍然存在,不过从数据库中获取的选项已经被添加成功了。
有什么办法可以解决这个问题吗...

几个错误 }));myfunction - my_function - Shaunak D
Shaunak,我没有复制粘贴我的确切代码,只是在打出它背后的想法。但还是谢谢你指出来。 - Teeoney
2个回答

6
您的选择器将查找值为NEW的选项元素内部的后代元素。请尝试:
sel.find('option[value!="NEW"][value!="PLS"]').remove();

DEMO


这将删除我的ajax重新添加公司之前的所有值。 - Teeoney
在发现我的HTML代码中有一个错误后,这个解决方案确实有效。非常感谢。我也更新了jsfiddle:http://jsfiddle.net/e6EB3/4/ - Teeoney
谢谢Rajaprabhu Aravindasam,这对我很有帮助。 - KCP
1
只是想说谢谢!我不知道这该怎么做,这真的帮了我! :) - WebMW

1
你可以简单地使用:gt选择器。
sel.find('option:gt(1)').remove();

工作演示


1
gt()жҖ»жҳҜйңҖиҰҒзҙўеј•гҖӮopиҜ•еӣҫйҖҡиҝҮvalueеҲ йҷӨelementгҖӮ - Girish
@Girish:正如您可以清楚地看到,任务可以简单地使用修改选择器来实现。那么为什么要让它变得复杂呢? - Milind Anantwar
1
好的,但是如果他想删除值为value="6"value="1",并且他没有这些值的索引,那么gt()函数还能起作用吗? - Girish
@Girish:别管他,他不想要那个。否则我也不会提供简化的解决方案了。 - Milind Anantwar
我在第一次调用时成功地使用了:gt选择器,但是对例程的其他调用(即我选择另一个选项)会导致它删除我想要保留的选项。猜测是因为我将数据附加到selectbox。 - Teeoney
@Teeoney:只要在它们之前不添加任何内容或删除这两个选项,它就应该能正常工作。此外,在附加选项后,您需要在ajax成功中编写此代码。 - Milind Anantwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接