2013-03-24 52 views
0

在代码中像这样的兄弟姐妹值:试图选择在jQuery的

 for(var i=0; i<arSelectedFields.length; i++) { 
      $("td[class='ms-formlabel']").each(function() { 
       var txtCol = $.trim($(this).text()); // field name 
       var fvalue = ""; //field value 
       if(txtCol == arSelectedFields[i]) { 

        $("td[class='ms-formlabel'] + td[class='ms-formbody']").each(function() {; // ignoring any field formatting; use html(), if needed 
          fvalue = $(this).text(); 
          if(fvalue != "") PrintingHTML += "\n<tr><td class='formlabel'>" + txtCol + "</td><td class='xdata'>" + fvalue + "</td></tr>"; 
          else PrintingHTML += "\n<tr><td class='formlabel'>" + txtCol + "</td><td class='xdata'>&nbsp;</td></tr>"; 
          fvalue = ""; 

        }); //each() 
        return false; 
       } //else return false; 
      }); 
     } 

我必须声明:

$("td[class='ms-formlabel'] + td[class='ms-formbody']").each(.... 

我真正想要的是一样的东西

$(this)...td[class='ms-formbody']").each(... 

但无法让它工作。换句话说,我只需要td[class='ms-formbody']存在于当前选中的行中(基于td[class='ms-formlabel']的值)。我能得到的最接近的是我展示的方式,它从顶部开始收集formbody元素,而不仅仅是适用于当前选定的formlabel的元素。

任何想法?

+0

你真的想选择兄弟姐妹吗?你写了“[...]存在于当前选择的行中[...]”。听起来更像是你在寻找后代。 – griffla 2013-03-24 17:34:30

+0

如果您也可以发布html。 – Jai 2013-03-24 17:36:07

+1

你知道你在循环内有一个循环,并且第一个'each()'函数的运行次数与'selectedFields'中的数组值相同,第二个'each()函数将会运行'selectedFields.length' *第一个'each()',并带有一个非常相似的选择器。似乎有点奇怪? – adeneo 2013-03-24 17:44:01

回答

1

如果我理解正确的话,你正在寻找的是这样的:

$(this).siblings("td[class='ms-formbody']").each(.. 
+0

很明显,你理解我是正确的,因为它像梦一样工作。我不知道像.siblings这样的事情。 – 2013-03-24 19:01:11

0

尝试

$(this + " td[class='ms-formbody']").each(... 

$(this).find("td[class='ms-formbody']").each(... 

是否有您所使用的属性的原因等于类的选择器?你应该只写:td.ms-formbody

+0

谢谢。我没有尝试过你的回答,因为纳尔逊的工作对我来说很完美。而关于组合类选择器的注释非常有意义。我一定是从某个地方复制了这个方案,并从那以后一直使用它。 – 2013-03-24 19:02:40