使用以下代码我尝试从绑定播放[index] .click()的函数内部访问 index 。
我一直在尝试几件事,但无法弄清楚。
jQuery(document).ready(function($) {
$( ".player" ).each(function( index ) {
if (typeof play === 'undefined') {
play = [];
}
play[index] = $(this).children('.button.play');
play[index].on('click', function(e, index) {
e.preventDefault();
// index where are you?
console.log( index );
});
});
});
修改
Html会像这样:
<div class="player">
<a class="button play" href="" title=""></a>
</div>
答案 0 :(得分:2)
在function(e, index) {
。您正在分配&#34;索引&#34;内部函数,所以现在这是另一个变量。无需这样做,只需删除(e,index)
//index here
play[index].on('click', function(e) {
e.preventDefault();
// index where are you?
console.log( index );
});
答案 1 :(得分:1)
您只是不将索引作为参数传递给事件,因为只有event
参数。但是,您可以将对象传递给事件https://api.jquery.com/event.data/:
jQuery(document).ready(function($) {
$( ".player" ).each(function( index ) {
if (typeof play === 'undefined') {
play = [];
}
play[index] = $(this).children('.button.play');
play[index].on('click', {value : index} ,function(e) {
e.preventDefault();
// index accessible from this block
console.log( e.data.value );
});
});
});
修改强>
这只是一种可能性,因为索引可以从事件中访问。所以你不需要这样做,因为可以从每个按钮访问索引。
这是codepen。
答案 2 :(得分:0)
您有一个参数index
,其名称与您要使用的外部作用域中的变量相同。
如果标识符在当前范围内使用,则Javascript不允许您访问其他范围中的变量。
您需要重命名参数或将其全部删除。