Javascript jQuery事件委派
我需要一些回电方面的帮助。由于某些原因,它们不能很好地工作。Javascript jQuery事件委派,javascript,jquery,callback,jquery-events,Javascript,Jquery,Callback,Jquery Events,我需要一些回电方面的帮助。由于某些原因,它们不能很好地工作。 我正在用jQuery做一个游戏。我有一个用于游戏中的所有按钮。这个游戏将有两个按钮来做动作,上面还有一个问题。问题由控制。我想知道的是,由于某种原因,我无法将回调函数设置为按钮的ID。例如, 我会选择“是”或“否”,它们通过jQuery设置了自己的id,如下所示: $('#按钮').html('Yes') 但出于某种原因,我可以设置: $('yes').click(function(){ //function I would wa
我正在用jQuery做一个游戏。我有一个
用于游戏中的所有按钮。这个游戏将有两个按钮来做动作,上面还有一个问题。问题由
控制。我想知道的是,由于某种原因,我无法将回调函数设置为按钮的ID。例如,
我会选择“是”或“否”,它们通过jQuery设置了自己的id,如下所示:
$('#按钮').html('Yes')代码>
但出于某种原因,我可以设置:
$('yes').click(function(){
//function I would want
});
当然,这不是我的代码,这只是一个例子。以下是真正的代码:
$(document).ready(function(){
$('#main,#batman,#car,#cop,#hobo,#knife,#gangfight,#ganggun,#gangknife,#blood,#hr').hide(-100);
var hr=$('#hr');
var main=$('#main');
var batman=$('#batman');
var car=$('#car');
var hobo=$('#hobo');
var cop=$('#cop');
var knife=$('#knife');
var gangfight=$('#gangfight');
var ganggun=$('#ganggun');
var gangknife=$('#gangknife');
var blood=$('#blood');
var text=$('#text');
var button=$('#button');
$('#start').html('Are you ready to play?');
$('#button').html('<button id="yes">Yes</button><button id="no">No</button>');
$('#yes').click(function(){
$('#yes,#no').hide(function(){
$('#start').hide();
main.fadeIn(-100);
hr.fadeIn(-100,function(){
text.delay(1000).html("You were just wandering around in the streets of new york, when suddenly.. You see batman!! You've never really liked him, what do you do?")
button.html('<button id="fight">Fight</button><button id="leave">Leave</button>',function(){
batman.fadeIn(1000);
$('fight').click(function(){
});
$('leave').click(function(){
text.fadeOut(function(){
text.text('Good call. As you leave, you encounter a hobo. What do you do?');
});
});
});
});
});
});
$('#no').click(function(){
$('#yes,#no').hide();
$('#start').text('Oh, okay then. Come back later!');
});
});
$(文档).ready(函数(){
$(“#main,#batman,#car,#cop,#hobo,#刀,#gangfight,#ganggun,#gangkive,#blood,#hr”)。隐藏(-100);
var hr=$(“#hr”);
var main=$(“#main”);
var蝙蝠侠=$(“#蝙蝠侠”);
var car=$(“#car”);
var hobo=$(“#hobo”);
var cop=$(“#cop”);
变量刀=$(“#刀”);
var gangfight=$(“#gangfight”);
var ganggun=$(“#ganggun”);
var gangknife=$(“#gangknife”);
变量血液=$(“#血液”);
var text=$(“#text”);
变量按钮=$(“#按钮”);
$(“#开始”).html('准备好玩了吗?');
$(“#按钮”).html('YesNo');
$(“#是”)。单击(函数(){
$('#是,#否').hide(function(){
$('#start').hide();
梅因.法代因(-100);
hr.fadeIn(-100,函数(){
text.delay(1000.html)(“你刚才在纽约的大街上闲逛,突然……你看到蝙蝠侠!!你从来都不喜欢他,你是做什么的?”)
html('fightLeft',函数(){
蝙蝠侠法登(1000);
$('fight')。单击(函数(){
});
$('leave')。单击(函数(){
text.fadeOut(函数(){
text.text('很好,当你离开的时候,你遇到了一个流浪汉。你是做什么的?');
});
});
});
});
});
});
$('#否')。单击(函数(){
$('yes,'no').hide();
$(“#开始”).text('哦,那好吧,稍后再来!');
});
});
我只是想知道。。如何将回调函数设置为“战斗”和“离开”。
如果您想知道为什么一开始就有这些变量,那么这些只是图像和字符。不要使用click()
,使用on('click')
,并将其附加到文档中
以这种方式创建处理程序将确保任何新元素都能够触发事件。不要使用单击()
,使用on('click')
,并将其附加到文档
以这种方式创建处理程序将确保任何新元素都能够触发事件。您使用的是哪个版本的jQuery?在这种情况下,您可能应该使用jQuery.on(),因为您的单击处理程序代码可能在按钮在DOM中实际可用之前执行
$("#button").on("click", "#yes", function (event) {
// Your yes-button logic comes here.
});
有关更多详细信息和可能性,请阅读以下目录中关于(events[,selector][,data],handler(eventObject))
方法的:
如果选择器被省略或为null,则事件处理程序称为直接或直接绑定。每次在选定元素上发生事件时,都会调用该处理程序,无论事件是直接发生在元素上还是从子元素(内部)冒泡而来
当提供选择器时,事件处理程序称为委派。当事件直接发生在绑定元素上时,不会调用该处理程序,而仅针对与选择器匹配的子体(内部元素)。jQuery将事件从事件目标冒泡到附加处理程序的元素(即,从最内层到最外层的元素),并为与选择器匹配的路径上的任何元素运行处理程序
在这种情况下,您希望委派事件,因为绑定事件时您的元素在DOM中还不可用。您使用的是哪个版本的jQuery?在这种情况下,您可能应该使用jQuery.on(),因为您的单击处理程序代码可能在按钮在DOM中实际可用之前执行
$("#button").on("click", "#yes", function (event) {
// Your yes-button logic comes here.
});
有关更多详细信息和可能性,请阅读以下目录中关于(events[,selector][,data],handler(eventObject))
方法的:
如果选择器被省略或为null,则事件处理程序称为直接或直接绑定。每次在选定元素上发生事件时,都会调用该处理程序,无论事件是直接发生在元素上还是从子元素(内部)冒泡而来
当提供选择器时,事件处理程序称为委派。当事件直接发生在绑定元素上时,不会调用该处理程序,而仅针对与选择器匹配的子体(内部元素)。jQuery将事件从事件目标冒泡到附加处理程序的元素(即,从最内层到最外层的元素),并为与选择器匹配的路径上的任何元素运行处理程序
在这种情况下,您希望委派事件,因为绑定事件时您的元素在DOM中还不可用。您不能在不存在的元素上设置单击处理程序。您应该使用.on
将元素绑定到树的更上层。比如:
$("#someparentelement").on("click", "#yes", function() {
// your code
});
不能在不存在的元素上设置单击处理程序。您应该使用.on
将元素绑定到树的更上层。比如:
$("#someparentelement").on("click", "#yes", function() {
// your code
});
$('fight')选择fight标记,而不是fight id的标记。请尝试使用$('fight')。$('fight')选择fight标记,而不是fight id的标记。请尝试使用$('fight')。我建议您输入大量代码