jQuery$(this).index()始终显示0



我试图获得点击类的索引,并使用以下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一起使用)进行比较——您有什么不同之处?

最新更新