这是我的问题,
无法在StackOverflow上找到的相关/类似问题中找到任何可行的解决方案。
我有一个填充了ajax数据的select,让我们称之为" mainSelect"它有一个" selectSomething"类。 在事件(更改/加密)上,如果所选值不是'',则会自动添加" subChoice"选择第一个,也有" selectSomething"类。
当用户在第二个选择中选择某个内容时,它会添加(或不选择,取决于选择了哪个值)当前一个下的新选择(仍然使用selectSomething类)。等等。像这样:
这是html部分:
<div class='choiceDiv'>
<select class='selectSomething' id='masterSelect'>
</select>
</div>
这是Js部分:
$(document).ready(function(){
populateMainSelect();
//does its job correctly
});
$(document).on('change keyup','.selectSomething',function(){
if($(this).val()!=''){
//Need here to remove all sub-choices selects
//NEXT LINE NOT WORKING !
$(this).parent().nextAll('.selectSomething').remove();
//And add or not a new one
if(/*NeedToAddASubSelectCheck*/){
//PopulateMySelect is a function that fills a jquery element. Like this :
// function PopulateMySelect(elementToFill,dataToEnter,callback);
PopulateMySelect($('<select>',{
class:'selectSomething'
}).appendTo('#choiceDiv')),data,function(){
console.log('select is created, filled and added on page');
});
}
}
});
也许&#34;逻辑&#34;这在某种程度上不是最佳的,你可能有建议给我这个,
但现在我的主要观点是该行
$(this).parent().nextAll('.selectSomething').remove();
不起作用......有什么想法吗?
感谢您阅读/帮助
修改:
如果我在控制台输出:
console.log($(this).nextAll('.selectSomething'));
我得到一个长度为0的对象[] ......
答案 0 :(得分:1)
接下来你不需要调用parent(),因为在这种情况下你将获得 parent 之后的下一个元素。
尝试:
$(this).nextAll('.selectSomething').remove();
答案 1 :(得分:1)
您需要使用
$(this).nextAll('.selectSomething').remove();
而不是
$(this).parent().nextAll('.selectSomething').remove();
因为您需要获得最近的父母,然后在其中找到任何选择并将其删除。
<强>解释强>
您的代码
$(this) // this here is the selectSomething dropdown
.parent() // this is the choiceDiv parent div element
.nextAll('.selectSomething') // there nothing next to choiceDiv
.remove(); // that's why this remove does not works here
答案 2 :(得分:0)
使用
$(this).parent().nextAll('.selectSomething').selectmenu('refresh', true);
后
$(this).parent().nextAll('.selectSomething').remove();
因为在动态删除选择框中的元素并动态添加选项后,需要刷新