2011-07-19 62 views
0

這裏是我想要轉換的代碼:轉換功能,jQuery的點擊()調用

<script> 
function fsomething(rowid) { 
    window.location = "/somewhere/" + rowid; 
} 

</script> 
<tr> 
    <td> 
     <button onClick="fsomething('{{rowid}}')">row 1L</button> 
    </td> 
    <td> 
     <button onClick="fsomething('{{rowid}}')">row 2L</button> 
    </td> 
</tr> 

我怎樣才能將它轉換爲:

$('button').click(function() { .... }); 

其中動態生成{{rowid}},並且每行都獨一無二?

+0

你想如何從td獲取行ID? – Dogbert

+0

什麼生成HTML,這是一個jQuery模板,PHP,...?如果你可以把你的html輸出改成''button data-rowId =「{{rowid}}」'這會很容易。 –

+0

任何你不能使用''或類似的理由? JS禁用的用戶無法以您的方式使用您的網站。 – Lekensteyn

回答

2

如果您使用data-屬性存儲ID,然後你可以說出來的元素被點擊時。

<script> 

$(function(){ 

    $("td button").click(function(e){ 

     // Go to the URL 
     window.location = "/somewhere/" + $(this).data("rowid"); 

     // Prevent default action if any 
     e.preventDefault(); 

    }); 

}); 

</script> 

<tr> 
    <td> 
     <button data-rowid="{{rowid}}">row 1L</button> 
    </td> 
    <td> 
     <button data-rowid="{{rowid}}">row 2L</button> 
    </td> 
</tr> 
+0

儘管我不確定移動rowid的位置是否可行,但我同意並認爲這是最合適的解決方案。 (儘管[.data()](http://api.jquery.com/data/)方法更適合,恕我直言。) –

+0

是的,這些方法更合適。我總是使用attr出於習慣,我應該嘗試遏制我的猜測。 – betamax

+0

只要小心,數據屬性就是HTML5特有的。 IE <9不會理解這個 – Emil

1

可能的解決方案

$('button').click(function(event)) 
{ 
window.location = "/somewhere/" + $(event.target).attr('id'); 
} 
2

我可能會改變按鈕是這樣的:

<button id="{{rowid}}">row 1L</button> 

然後使用jQuery是這樣的:

$("button").click(function() { 
    window.location = "/somewhere/" + $(this).attr("id"); 
}); 
+0

對我很好。 –

0

您可以分配{{行ID}}以每個按鈕作爲屬性,然後在方法中讀取它:

<button rowid="{{rowid}}">row 1L</button> 

$('button').click(function() { fsomething($(this).attr("rowid")); });