2013-03-24 3 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 сверху, а не только тот, который применяется к текущей выбранной форме.

Любые идеи?

+0

Вы действительно хотите выбрать родных братьев? Вы написали «[...], который существует в текущей строке [...]». Похоже, вы ищете потомков. – griffla

+0

Если бы вы могли разместить html тоже. – Jai

+1

Вы понимаете, что у вас есть цикл внутри цикла в цикле и что первая функция 'each()' будет выполняться столько же раз, сколько значений массива в 'selectedFields', а вторая' each() ' функция будет запускать 'selectedFields.length' * первый' each() ', с очень похожим селектором. Кажется немного странным? – adeneo

ответ

1

Если я вас правильно понимаю, что вы ищете это:

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

Очевидно, вы поняли меня правильно, потому что это работает как сон. Я не знал, что есть такая вещь, как. –

0

Попробуйте

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

или

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

Есть ли причина того, что вы используете атрибут равно селектору для класса? Вы должны просто написать: td.ms-formbody

+0

Спасибо. Я не пробовал ваш ответ, так как Нельсон отлично работал для меня. И ваш комментарий о составлении селектора классов имеет смысл. Я, должно быть, скопировал эту схему откуда-то и использовал ее с тех пор. –

Смежные вопросы