我成功使用了此处发布的jquery脚本TheSuperTramp:
Jquery dependent drop down boxes populate- how
删除任何值小于所选列表项的列表项。但是,我只需要删除我在第一个下拉菜单中选择的值。我相信下面的jquery脚本应该完成这个,但事实并非如此。任何纠正这一点的建议都将非常感激。
谢谢, KS
var drop2 = $("select[id=dropdown] option"); // the collection of initial options
$("select[id=test]").change(function () {
var drop1selected = parseInt(this.value); //get drop1 's selected value
$("select[id=dropdown]")
.html(drop2) //reset dropdown list
.find('option').filter(function () {
if (parseInt(this.value) == drop1selected)
{
$(this).remove();
};
});
});
答案 0 :(得分:2)
这里你真正需要的是.each()
,而不是.filter()
:
var drop2 = $("select[id=dropdown] option"); // the collection of initial options
$("select[id=test]").change(function () {
var drop1selected = parseInt(this.value); //get drop1 's selected value
$("select[id=dropdown]")
.html(drop2) //reset dropdown list
.find('option').each(function () {
if (parseInt(this.value) === drop1selected)
{
$(this).remove();
};
});
});
由于.filter()
将从匹配元素的结果集中删除元素,但它不会从DOM中删除它们。您可能希望像这样使用它:
var drop2 = $("select[id=dropdown] option"); // the collection of initial options
$("select[id=test]").change(function () {
var drop1selected = parseInt(this.value); //get drop1 's selected value
$("select[id=dropdown]")
.html(drop2) //reset dropdown list
.find('option').filter(function () {
return parseInt(this.value) === drop1selected;
}).remove();
});