2009-03-04 3 views
3

Я пытаюсь использовать jQuery для идентификации <td> элементов, содержащих специальный текст комментария HTML. Стандартный «: содержит» селектор, похоже, не смотрит в комментарии. Мой контекст здесь заключается в том, что я хочу динамически добавлять некоторый контент к тому же элементу td. Вот пример целевого тд:Как найти элементы html, содержащие определенный текст в комментарии html?

<TD valign="top" class="ms-formbody" width="400px"> 
     <!-- FieldName="Title" 
      FieldInternalName="Title" 
      FieldType="SPFieldText" 
      --> 
      <span dir="none"> 
     <input name="ctl00$m$g_0b1e4ca3_9450_4f3e_b3af_8134fe014ea5$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_0b1e4ca3_9450_4f3e_b3af_8134fe014ea5_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Title" class="ms-long" /><br> 
    </span> 


     </TD> 

Этот HTML генерируется SharePoint как часть новой формы элемента списка, и я действительно хочу, чтобы найти тд в моем документе, чей «FieldInternalName» в комментарии соответствует некоторым текстовая строка. Как я могу использовать jQuery (или любой javascript действительно будет в порядке), чтобы наилучшим образом найти эти элементы td?

ответ

3

Вы можете захватить innerHTML элемента и запустить над ним регулярное выражение.

Пример:

// HTML: <div id="myElement">Lorem <!-- a comment --> ipsum.</div> 

var element = document.getElementById('myElement'); 
alert(element.innerHTML); // alerts "Lorem <!-- a comment --> ipsum." 
// here you could run a regular expression 

Обновление: более полный пример (с JQuery):

var tds = $('td'), match; 
tds.each(function(index, element) { 
    match = $(element).innerHTML.match(/FieldInternalName="(^["])"/); 
    if (match) alert(match); 
}); 
0
if(document.getElementById('myElement').innerHTML.indexOf(text_string) != -1) { //do something } 
Смежные вопросы