-1

我正在尝试获取单击类的索引并使用以下 jQuery 代码,但它总是向我显示 0(零)。请帮忙解决这个问题,先谢谢了。

$('.image_or_video').live('click', function(){
    var clicked_radio = $(this).index();
    alert(clicked_radio);
});
4

4 回答 4

2

我敢打赌你想要父级的索引而不是你点击的元素。看看这段代码。

<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>

的索引<li><a>. 这个演示应该有助于清除它。

http://jsbin.com/ofapin/3/edit

于 2013-07-16T19:44:29.420 回答
1

请注意,.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');
于 2013-07-16T19:40:33.400 回答
0

将事件接收者对象参数添加到您的点击处理程序。我无法live()在小提琴中快速使用它,但这是我在小提琴中所做的工作

$(function() {
    $('.image_or_video').click( function(target){
        var clicked_radio = $(target.target).index('.image_or_video');
        alert(clicked_radio);
    });
});
于 2013-07-16T19:44:52.613 回答
0

我使用了完全相同的 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)进行比较——您有什么不同之处?

于 2013-07-16T19:50:14.857 回答