2010-06-29 37 views
1

我jQuery是沒有按預期工作:在錶行JQuery的失效鏈接

我的每一行通過每個TD試圖循環然後循環,並檢查是否在連續TD包含如果是文本「TEST1」我需要禁用在同一行內的類「ms-vb-icon2」中定義的td鏈接。

$("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> 

回答

1

在這種情況下刪除.,則#click,並添加缺少的2vb2,就像這樣:

$("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,但是因爲只有一個鏈接,所以在這裏沒有必要:)

+0

感謝Nick,儘管它似乎沒有禁用Firefox中的谷歌鏈接http:// jsfiddle .net/R8fuR/1/ – van 2010-06-29 10:56:19

+0

@nav - 2件事,你不包括jQuery,並且在vb2上有一個缺少的'2',爲了消除另一個錯誤,我們可以刪除'onclick'屬性,如下所示:http: //jsfiddle.net/R8fuR/2/我會更新匹配的答案。 – 2010-06-29 11:04:35

+0

感謝您發現有效的錯誤 – van 2010-06-29 11:08:55

0

在你的選擇有是TD類和錨之間的額外點。嘗試:

$("tr:has(td:contains('test1')) td.ms-vb-icon a#click").click(function() { return false; }); 
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'); 
    } 
});