2011-09-13 20 views
2

我有一個外部JavaScript插件,我不能編輯和作品通過點擊縮略圖的名單上的工作進行點擊。jQuery的上<img>

爲了造型的目的我曾與包裹在<a>圖像:

if(img.parent("a").length == 0){ 
    img.wrap('<a />'); 
} 

有沒有一種方法,我可以添加一個點擊的<a>我已經插入其中,然後讓這個JavaScript插件調用動作點擊圖片。

我曾經嘗試這樣做雖然不能正常工作,並給出了錯誤:Too much recursion

$("#thumbs a").live("click", function(){ 
    $(this).find("img").click(); 
}); 
+0

你能剛反應過來對IMG本身的單擊事件?是否有一個特定的原因,你想要編程地點擊img? – Anthony

回答

2

是。

if(!img.parent("a").length){ 
    img.wrap('<a />').parent('a').bind('click', function() { 

     // ALL THE CODE!!! 

    }); 
} 

你也不必說if (something.length == 0)因爲默認情況下將返回0 ...所以你可以說,if (!something.length)

0

添加e.stopPropagation();到IMGS的點擊處理程序。

http://api.jquery.com/event.stopPropagation/

1

Too much recursion意味着什麼是循環一遍又一遍,可能是無限的。一個與您當前的代碼發生的原因是因爲<a><img>父母,等等<img>泡沫任意點擊事件到父<a>(搜索「事件冒泡」在谷歌)。所以,你的代碼基本上是說:「當有人點擊<a>,觸發點擊<img>然後<a>(因爲事件冒泡的)」 - 這當然會導致代碼再次運行。

如果JavaScript插件已經有綁定事件來點擊圖片,我不明白爲什麼你需要綁定一個點擊事件到父母<a>,只需點擊圖片。你需要什麼發生,當用戶點擊<img>尚未發生的事情 - 而不包括jQuery代碼?