jQuery单击函数不在类上工作

时间:2014-05-25 04:40:09

标签: javascript jquery

所以我有一堆我想要点击的游戏片段。如果我向按钮添加一个单击功能,我会得到所需的结果,但是当我将它添加到游戏块类时,它无法工作。

这是一个在jsfiddle上运行正常的示例,但在我的脚本中使用时却没有: http://jsfiddle.net/sLt7C/

以下是我要在页面上执行的操作:

$('.gamePiece').click(function(){
    $('.gamePiece').addClass("toggled");
});

这不起作用,但如果我将标识符切换到页面上的按钮,它确实有效:

$('#btn_AddClass').click(function(){
    $('.gamePiece').addClass("toggled");
});

导致此失败的原因是什么?

不确定这是否会对导致其失败的原因产生任何影响,但是"游戏棋子"是点击"新游戏"生成的span元素。按钮。

这是一个显示更多代码http://jsfiddle.net/sLt7C/4/

的小提琴

进一步澄清:

这不起作用

$('.gamePeice').click(function(){
    $(this).addClass("toggled");
});

这有效

$('#btn_addClass').click(function(){
    $('.gamePeice').addClass("toggled");
});

2 个答案:

答案 0 :(得分:5)

如果在页面加载后添加游戏块(即通过单击按钮),则需要使用jquery .on()

来使用事件委派
  

事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。

$(myContainer).on('click', '.gamePiece', function(){
  $(this).addClass("toggled");
});

答案 1 :(得分:2)

我想你想要这个:

$(document).ready(function() {

    $(document).on('click', '.gamePeice', function(){
        $(this).addClass("toggled");
    });
});

而不是

$('.gamePeice').click(function(){
    $(this).addClass("toggled");
});

$('#btn_addClass').click(function(){
    $('.gamePeice').addClass("toggled");
});

只是证明http://jsfiddle.net/aras7/sLt7C/7/