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')。

我建议您输入大量代码