在我的项目中。我正在尝试检查父div中存在的任何其他相邻div
中是否存在某个数字。
//generated dynamically using jQuery
<div> //parent div
//many div's
//one of the child div is selected by the user.
</div>
<div> //another parent div
//my function is checking one of these div's instead of the above, rarely
</div>
我使用了以下代码。但它有时(很少)选择另一个父div
的子元素,我不想检查(我用chrome调试器检查)。如果有时即使函数选择了正确的父div,它总是选择用户选择的相同子div元素。
的jQuery
function checkInGroup(){
var selectedDiv = $('#' + _selectedDivId); //updated after engineer's comment
selectedDiv.parent("div").children().each(function(){
debugger;
if(this !== selectedDiv[0]){ //selecting the same div
var self = $(this);
if(self.text() == _randomNumber){
debugger; //never executing
//do some function here
}
}
});
}
编辑:我不确定为什么我的代码在 jsbin 中正常工作时无效。我需要检查为什么这样..它始终检查与相同的用户选择div?因此该函数不会进入if语句..
if语句中存在的debugger
永远不会执行。并且每个函数循环仅使用相同的选定div发生一次(因此该函数未输入if语句)
以下是 jsfiddle
答案 0 :(得分:2)
尝试:
selectedDiv.parent("div").children().not(selectedDiv).each(function(){
//your code
});
答案 1 :(得分:2)
$ .each()函数的实际签名是$ .each([Array],index,element)。在你的情况下:
function checkInGroup(){
var selectedDiv = $('#' + _selectedDivId);
$.each(selectedDiv.parent("div").children(), function(index, element){
debugger;
if($(element) !== selectedDiv){ //selecting the same div
if($(element).text() == _randomNumber){
//do some function here
}
}
});
}
答案 2 :(得分:1)
使用siblings。
$('#' + _selectedDivId).siblings().each(function(){
});
更新:
selectedDiv id实际上不是div它是按钮ID。那就是问题所在。请 像下面一样更改你的代码。
selectedDiv.parent("div").parent("div").find("button").each(function(){
答案 3 :(得分:0)
selectedDiv
可能是您示例中的数组。
我认为你不能像这样比较两个jQuery对象。
您可以考虑使用数据属性吗?
e.g。
var selectedDiv = $('#' + _selectedDivId);
selectedDiv.data('selected', true);
然后
selectedDiv.parent("div").children().each(function(){
debugger;
if($(this).data('selected') !== true){ //selecting the same div
if($(this).text() == _randomNumber){
//do some function here
}
}
});
请记住在取消选择div时将selected
设置为false。
这可能是一种更有效的方法,但这应该有效。