我有一组div为0,1等的图像。所以在某一点上我需要让所选图像的{id} 'img.selected' (with $(this).toggleClass('selected');)
在之前的某些行被执行。
所以我使用$('img.selected').attr('id')
它确实返回了图像的id,但是由于小问题,当我稍后点击另一个图像时id大于最后一个图像时,它会返回较小的id。
所以例如我点击图片3,它返回3,然后我点击图片2然后我得到2作为回报,然后我点击0然后我得到0,但是然后我点击6,我仍然是0,依此类推。它总是返回较小的div。
关于它为什么会这样做以及如何解决它的任何建议?
答案 0 :(得分:1)
点击图片3:
<img id=1></img>
<img id=2></img>
<img id=3 class="selected"></img>
在这种情况下:
$('img.selected').attr('id')
返回id = 3
然后点击图片1:
<img id=1 class="selected"></img>
<img id=2></img>
<img id=3 class="selected"></img>
$('img.selected').attr('id')
始终返回id = 1
答案 1 :(得分:0)
因为浏览器从较小的id(首先创建)div开始检查。因此它在6之前找到0,而它看起来像是工作正常,然后从3变为2到1到0.从詹姆斯说,在将它添加到另一个之前从所选的中删除。
答案 2 :(得分:0)
尝试使用此方法或其他方法,在点击之前先删除selected
类:
$("img").each(function(item, index){
$(this).removeClass('selected');
});