我试图获得点击类的索引,并使用以下jQuery代码,但它总是显示0(零)。请帮忙解决这个问题,提前谢谢。
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
我敢打赌,您想要的是父元素的索引,而不是您正在单击的元素。看看这个代码。
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
<li><a href="#">Item 5</a></li>
<li><a href="#">Item 6</a></li>
<li><a href="#">Item 7</a></li>
<li><a href="#">Item 8</a></li>
<li><a href="#">Item 9</a></li>
<li><a href="#">Item 10</a></li>
</ul>
CCD_ 1的索引比CCD_ 2的索引有用得多。这个演示应该有助于澄清这一点。
http://jsbin.com/ofapin/3/edit
请注意,.live()
已弃用。您应该在父元素上使用.on()
,如下所示:$('.parent').on('click','.image_or_video',function(){...})
要解决您的问题,请尝试替换以下行:(查看文档)
var clicked_radio = $(this).index();
至
var clicked_radio = $('.image_or_video').index(this);
或
var clicked_radio = $(this).index('.image_or_video');
将事件接收者对象参数添加到单击处理程序中。我无法在live()
的情况下快速工作,但以下是我在小提琴中工作的结果:
$(function() {
$('.image_or_video').click( function(target){
var clicked_radio = $(target.target).index('.image_or_video');
alert(clicked_radio);
});
});
我使用了完全相同的js代码,它起了作用:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
</script>
<script>
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
</script>
</body>
</html>
您使用的是什么版本的jquery?Live已弃用。请改用on()。
将您的代码与上面的代码(与旧的jQuery一起使用)进行比较——您有什么不同之处?