JQuery отключить ссылку в строке таблицы - PullRequest
1 голос
/ 29 июня 2010

Мой jQuery не работает должным образом:

Я пытаюсь перебрать каждую строку, затем перебрать каждый тд и проверить, содержит ли тд в строке текст «test1», если да, мне нужно отключить ссылку, определенную в тд с классом «ms-vb-icon2» в том же ряду.

$("tr:has(td:contains('test1')) td.ms-vb-icon.a#click").click(function() { return false; });

http://jsfiddle.net/R8fuR/

Мой код, как показано ниже ...

<table class='ms-listviewtable'>
<tr>
<td class='ms-vb2-icon'>
<A onclick='GoToLink(this);return false;' href='http://www.google.com' target='_self'><IMG alt='Edit' src='http://web-hub.net/wiki/skins/largepublisher/icon_edit_small.gif'/></A>
</td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'>test1</td>
</tr>
<tr>
<td class='ms-vb2-icon'>
<A onclick='GoToLink(this);return false;' href='http://www.google.com' target='_self'><IMG alt='Edit' src='http://web-hub.net/wiki/skins/largepublisher/icon_edit_small.gif'/></A>
</td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'>test2</td>
</tr>
<tr>
<td class='ms-vb2-icon'>
<A onclick='GoToLink(this);return false;' href='http://www.google.com' target='_self'><IMG alt='Edit' src='http://web-hub.net/wiki/skins/largepublisher/icon_edit_small.gif'/></A>
</td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'></td>
<td class='ms-vb2'>test3</td>
</tr>
</table>

Ответы [ 3 ]

1 голос
/ 29 июня 2010

В этом случае удалите ., #click и добавьте недостающие 2 к vb2, например:

$("tr:has(td:contains('test1')) td.ms-vb2-icon a").click(function() { return false; });

Или, в качестве альтернативы, удалите начальный обработчик кликов, это больше похоже на то, что вам нужно:

$("tr:has(td:contains('test1')) td.ms-vb2-icon a")
  .removeAttr('onclick').click(function() { return false; });

Вы можете попробовать демо здесь

Вам необходимо удалить уже подключенный обработчик событий, потому что это произойдет за до этого нового, так как он был присоединен первым. . выходит, потому что это не класс, это дочерний элемент, а #click выходит, потому что мы не ищем <a id="click">. Я думаю, что вы намеревались здесь a[onclick], селектор has-attribute , но поскольку здесь есть только одна ссылка, здесь это не нужно

0 голосов
/ 29 июня 2010

должно выглядеть так:

$('table.ms-listviewtable > tbody').find('td').each(function(){
   var $this = $(this);
   if(/test1/.test($this.text())){
      $this.siblings('.ms-vb-icon2').find('a')
         .unbind('click')
         .removeAttr('onclick')
         .attr('disabled', 'disabled');
   }
});
0 голосов
/ 29 июня 2010

В вашем селекторе есть дополнительная точка между классом td и якорем. Попробуйте:

$("tr:has(td:contains('test1')) td.ms-vb-icon a#click").click(function() { return false; });
...