2011-06-15 27 views
0

目前我的服務器輸出HTML,看起來是這樣的:將服務器的信息發送給jQuery腳本的建議做法是什麼?

<span class='tag'>music<a href='' onclick='return remove_tag(73)'>×</a></span> 
<span class='tag'>concert<a href='' onclick='return remove_tag(42)'>×</a></span> 
<span class='tag'>theatre<a href='' onclick='return remove_tag(101)'>×</a></span> 

當然,在JavaScript中的數字是服務器瞭解數據庫ID。

現在,有人告訴我,這不是好習慣了把JavaScript的onclick處理成HTML,而是將它們綁定jQuery中:

<span class='tag'>music<a href=''>×</a></span> 
<span class='tag'>concert<a href=''>×</a></span> 
<span class='tag'>theatre<a href=''>×</a></span> 

[...] 

$(".tag a").click(function() { return remove_tag(???); }) 

但現在我把這些ID的地方每個標籤?這是什麼建議的做法?

回答

4

如果您可以使用jQuery 1.4.3+,則可以使用data- *屬性。

<span class='tag'>music<a href='' data-id="73">×</a></span> 

,然後在jQuery的

$(".tag a").click(function() { 
    return remove_tag($(this).data("id")); 
}); 

Example on jsfiddle

+0

需要注意,jQuery增加了對1.4中data- *屬性的支持。 3,看[.data() - jQuery API](http://api.jquery.com/data) – MikeM 2011-06-15 13:42:19

+0

謝謝,更新了答案,以反映正確的版本。 – 2011-06-15 13:43:27

+0

不錯!所有的瀏覽器都接受這些屬性嗎?這聽起來令人驚訝,但它會很好,如果是這樣的話:) – Timwi 2011-06-15 13:49:00

2

我通常最終把它們放在一個數據屬性,如:

<span class='tag'>music<a href='' data-tag-id="73">×</a></span> 
<span class='tag'>concert<a href='' data-tag-id="42">×</a></span> 
<span class='tag'>theatre<a href='' data-tag-id="101">×</a></span> 

然後在JavaScript你做:

$(".tag a").click(function() { return remove_tag($(this).data('tag-id')); }) 
-1

你可以只輸出數據屬性data-tagId這個id的值將會從數據庫中,這樣的事情。

<span class='tag'>music<a href='#' data-tagId='73'>×</a></span> 

在客戶端附加這樣的事件並獲取數據屬性值。

$(".tag a").click(function() { return remove_tag($(this).data('tagId')); }); 
+0

原始屬性是錯誤的方法。其他人的回答更爲正確。 – 2011-06-15 13:43:32

+0

對於不支持html 5數據屬性的瀏覽器,「data-id」只是一個原始的attirbute。考慮到我提到使用tagId作爲屬性。 – ShankarSangoli 2011-06-15 16:49:26

+0

編輯我的答案,小心刪除投票? – ShankarSangoli 2011-08-19 19:04:01

1

你可以使用HTML5 data-* Attributes

順便說一句,還有如果你遵循最佳實踐的更多問題。您應該使用不引人注意的JavaScript,因爲在查看頁面時,javascript被關閉的情況下,html應該完全正常運行。我的意思是,在你的情況下,我不會離開那些空白的href,並會給他們鏈接功能,這將導致標籤去除確認頁面

相關問題