2010-09-19 42 views
1

林停留在一些的jQuery ATTR ID,我不知道为什么它不是工作...jQuery的获得活动图像

$('img').click(function() { 
    $('img').removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

var test = $('img.bob').attr('src'); 
$('div.button').click(function() { 
    alert(test); 
}); 

基本上我需要得到选择的图像的ATTR ID,但警报只返回'null'。

任何建议将不胜感激。进出口拉我的头发...

A.

+0

一开始猜测你想要'$( 'img.bob')ATTR( '身份证');' – 2010-09-19 16:35:06

+1

做:'$( 'div.button')点击(函数(){警报($('img.bob')。attr('id'));});'work? – 2010-09-19 16:35:49

回答

1

记住,你分配不运行,直到你实际点击的<img>click事件,所以试图让一个在<img>元素上发生任何点击事件之前,类.bob的图像将导致匹配0个元素(除非在加载页面之前已将.bob分配给其中一个<img>元素)

您需要检索中的'id'按钮的点击处理程序。

此外,您可以通过缓存找到的<img>元素(只要在页面加载后不动态添加其他元素),使代码更高效一些。

var $img = $('img').click(function() { 
    $img.not(this).removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

$('div.button').click(function() { 
    var test = $img.filter('.bob').attr('id'); 
    alert(test); 
}); 

如果您要动态添加图像,则不需要缓存它们。 。

$('img').click(function() { 
    $('img').not(this).removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

$('div.button').click(function() { 
    var test = $('img.bob').attr('id'); 
    alert(test); 
}); 
0

试试这个:

$('div.button').click(function() { 
    alert(this.id.ToString()); 
});