2010-10-05 35 views
2

我有一些代碼有點像這樣...如何用清潔的jQuery樣式代碼替換這些onclick =「...」屬性?

<img src="..." width="100" height="100" alt="" onclick="FlipImg(1234)" /> 

有很多網頁上這些圖像,每個模塊在FlipImg()調用不同的ID的。

我通常喜歡把這種類型的代碼放到一個位jQuery的,也許有點像這樣的......

$("img").click(FlipImg(<id from somewhere?>)); 

不過,我想不通的地方來存儲我需要的ID傳遞給代碼(標題已被用來包含,以及圖像的標題,並且id已被用於別的東西)。

任何人都可以提出一種方法讓我的onclick代碼出html和我的JavaScript文件,它屬於哪裏?

回答

4
$("img").click(function() { 
    FlipImg($(this).attr('class')); 
}); 

您可以這樣做,並將ID存儲在圖像的id標記中。要成爲有效的HTML,ID不能以數字開頭,所以要加上一些東西。

編輯:我錯過了問題的一部分

<img src="..." width="100" height="100" alt="" class="img1234" /> 

然後做:

$("img").click(function() { 
    FlipImg($(this).attr('class').substring(3)); 
}); 
+2

OP表示該ID已用於其他內容。 – tdammers 2010-10-05 07:40:30

+0

'jquery-id'不是一個有效的html屬性,可能會在其他瀏覽器上失敗。 – Reigel 2010-10-05 07:46:42

+0

最後一次嘗試,因爲id已被使用。 – Gazler 2010-10-05 08:03:24

1

不管我理解烏爾問題我的解決辦法是

HTML

<img src="..." width="100" height="100" id="1234" /> 

的javascript

jQuery('img').bind('click',function(e){ 
     FlipImg(jQuery(e.target).attr('id')); 
     }); 
0

嘗試:

< IMG SRC = 「...」 寬度= 「100」 HEIGHT = 「100」 ALT = 「」 的onclick =「FlipImg(1234) 「的rel =」 1234"/>

和jQuery中:

$( 「IMG」)點擊(函數(){ FlipImg($(this).attr(「rel」)); });

它應該工作

2

與這裏其他的答案,我建議你回收的另一個屬性你的文檔,使用jQuery提取價值。您可以使用哪一個取決於頁面doctype以及您希望遵循該doctype的規範的密切程度。如果你不關心文檔類型,那麼我對這個問題的任何答案都會起作用。如果你做護理,你的選擇是相當少:

  1. 您可以將類添加到圖像:<img src="..." class="flip1234" />
  2. 您可以添加標題到這一形象:<img src="..." title="Image 1234" alt="Alt text" />
  3. 您可以哈希添加到圖片網址:<img src="myimage.png#1234 />
  4. 你可以用圖像中的錨,但後來殺點擊:<a href="myimagescript.php?id=1234"><img .../></a>

選項4只是一個選擇,如果你有一個有效的頁面來處理這類的請求。對所有這些解決方案都比較好,因爲它仍然允許關閉JS的用戶查看您的內容。一些人對選項1非常惱火,因爲他們認爲它會污染表現和行爲。我完全可以看到他們的觀點,但這是我個人的選擇。

添加一個自定義標記絕對是一種選擇,但是如果你真的關心驗證,你需要自己製作DTD。

0

我想你的查詢是關於將代碼移出HTML。 按照Alin的建議,您可以添加一個額外的屬性。然後在js中,遍歷所有img標籤,找出這個attrib是否存在於標籤上,然後將onclick綁定到它。 我正在學習jquery,所以不會寫代碼。如果有人能把它放在這裏,請做。