我的jQuery没有按预期工作:
我试图遍历每一行然后循环遍历每个td并检查一行中的td是否包含文本'test1',如果是这样我需要禁用td中定义的链接“ms-vb-icon2”在同一行内。
$("tr:has(td:contains('test1')) td.ms-vb-icon.a#click").click(function() { return false; });
我的代码如下......
<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>
答案 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; });
您需要删除已经附加的事件处理程序,因为它会在这个新事件之前发生,因为它首先被附加。 .
出现是因为它不是一个类,它是一个子元素,#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');
}
});