检查特定父div的所有子div中的值

时间:2013-01-22 12:13:25

标签: javascript jquery

在我的项目中。我正在尝试检查父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

4 个答案:

答案 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(){

demo

答案 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。

这可能是一种更有效的方法,但这应该有效。