所以我有一堆我想要点击的游戏片段。如果我向按钮添加一个单击功能,我会得到所需的结果,但是当我将它添加到游戏块类时,它无法工作。
这是一个在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");
});
答案 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");
});