JQuery禁用表行中的链接

时间:2010-06-29 10:27:18

标签: jquery html html-table

我的jQuery没有按预期工作:

我试图遍历每一行然后循环遍历每个td并检查一行中的td是否包含文本'test1',如果是这样我需要禁用td中定义的链接“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 个答案:

答案 0 :(得分:1)

在这种情况下,移除.#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; });

You can try out a demo here

您需要删除已经附加的事件处理程序,因为它会在这个新事件之前发生,因为它首先被附加。 .出现是因为它不是一个类,它是一个子元素,#click出来是因为我们不是在寻找<a id="click">。我认为你在这里的意思是a[onclick]has-attribute selector,但由于这里只有一个链接,所以没有必要:)

答案 1 :(得分:0)

在你的选择器中,td类和锚之间有一个额外的点。尝试:

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

答案 2 :(得分:0)

应该是这样的:

$('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');
   }
});