Селектор Jquery css с использованием регулярных выражений

У меня есть ДИНАМИЧЕСКИ генерируемый элемент навигации.

<div id="WebPartWPQ9" >
 <table class="xm-ptabarea">
  <tbody>
   <tr>
    <td nowrap="" class="tab"><a href="/somelink.aspx">Overview</a></td>
    <td nowrap="" class="tab"><a href="/anothersomelink.aspx">Financials</a></td>
    <td nowrap="" class="tab"><a href="/somemorelink.aspx">Newsfeed</a></td>
   </tr>
  </tbody>
 </table>
</div>

Поскольку нет уникальных идентификаторов, используя jquery, я хочу иметь возможность прикрепить событие к ссылке на вкладку «финансы» (возможно, используя селекторы регулярных выражений?)

Значение ссылки всегда будет «Финансы».


person siimi    schedule 23.09.2010    source источник


Ответы (4)


Очень легко выбрать этот элемент <a> с помощью :contains селектора:

var $financialsLink = $('#WebPartWPQ9').find('td.tab > a:contains(Financials)');
person Matt Ball    schedule 23.09.2010

Поскольку он генерируется динамически, вы можете использовать .live() для обработки событий элементов, созданных после загрузки DOM.

$('#WebPartWPQ9 td.tab a:contains(Financials)').live('click', function() {
    // run code
});

Или, если #WebPartWPQ9 присутствует при загрузке страницы, я, вероятно, вместо этого использую .delegate().

$('#WebPartWPQ9').delegate('td.tab a:contains(Financials)', 'click', function() {
    // run code
});

Оба они используют селектор :contains, чтобы настроить таргетинг на элемент "Финансы".

person user113716    schedule 23.09.2010
comment
@Bears - да, конечно. Спасибо. :о) - person user113716; 23.09.2010

Вы можете использовать селектор фильтров :contains и live следующим образом:

$('.tab a:contains("Financials")').live('click', function(){
  // your code...
});
person Sarfraz    schedule 23.09.2010
comment
я не думаю, что цитаты вокруг финансовых показателей необходимы - person Jason; 23.09.2010
comment
@Jason: Да, это сработает, но это хорошая практика, потому что вам нужно указать это для строк с интервалом. Также документы jquery используют кавычки. - person Sarfraz; 23.09.2010

person    schedule
comment
Вы пропустили часть live. - person Sarfraz; 23.09.2010
comment
@Sarfraz, какая живая часть? ОП сказал, что он хочет прикрепить обработчик кликов к динамически генерируемым элементам и что ему нужно найти соответствующий элемент. Он ничего не упоминает о динамической регенерации этих элементов после прикрепления обработчика кликов, поэтому я не говорил ни о какой live части. Это было бы ненужным, но, конечно, это будет зависеть от конкретного сценария. - person Darin Dimitrov; 23.09.2010
comment
для моего сценария LIVE не нужен, так как регенерация не происходит после загрузки страницы. Приятно узнать о «живом», хотя я не знал об этом раньше. - person siimi; 23.09.2010