2009-02-16 33 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捕获或冒泡阶段的事件以及何时取消进一步的事件传播。