2009-02-16 30 views
0

我的DOM看起來是這樣的:點擊格,但希望子元素髮生反應,點擊

<div class="profile"> 
     <a href="#"><img src="/img1.gif" /></a> <b>100</b> 
     <a href="#"><img src="/img2.gif" /></a> 
</div> 

好了,所以我有很多我的網頁上,這些元素,所以使用jQuery我綁定這樣所有事件:現在

$(".profile").live('click', myCallback); 


var myCallback = function(event) { 
     // ?? 
}; 

,當有人點擊一號超級鏈接,我想改變形象,以「/img1_on.gif」,然後進行調用Ajax網頁並更換與之間的值返回值。

同樣的事情happends點擊其他圖像時,除了圖像更改爲「/img2_on.gif」,它去到另一個URL。

如果我將轉換爲div並添加一些css會更容易嗎?

+0

你問在標題和點擊的文本鏈接點擊股利。也許你可以編輯你的問題? – webjunkie 2009-02-16 22:32:32

回答

4
$(".profile a").live("click", function(e) { 
    var temp = $("img", this); 
    var temp2 = temp.attr("src").split('.'); 

    temp.attr("src", temp2[0] + "_on" + temp2[1]); 

    // Ajax goes here. 

    e.preventDefault(); 
}); 

你已經知道div是被點擊的人,而不是div內的鏈接。假設你填寫了ajax部分,這個函數應該適合你。

+0

而不是$(本).find( 'IMG'),你也可以這樣做:$( 'IMG',這一點) – 2009-02-17 00:39:25

1

我不完全知道你是問什麼,但如果你想找出導致點擊事件的元素,你可以從那裏e.target使用,然後$(e.target)。像這樣的東西。

$(".profile").live('click', function(e){ 
    if($(e.target).is("a")) 
    $(e.target).find("img").attr("src","/new/url.jpg"); 
}); 
0

例如,只選擇子鏈接(將是鏈接):

$(".profile > a") 

對於圖像(將是圖像來操縱):

$(".profile > a > img").live("click", function(event) { 
    var src = $(this).attr("src"); 
    $(this).attr("src", src.replace(".gif", "_on.gif")); 
    // ajax call in any way you prefer 
    // in callback you can switch button state back 
}); 
-1

你會發現這正是post解釋什麼事件順序是什麼意思聽牛逼o捕獲或冒泡階段的事件以及何時取消進一步的事件傳播。