Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击不使用动态创建按钮触发的事件_Javascript_Jquery - Fatal编程技术网

Javascript 单击不使用动态创建按钮触发的事件

Javascript 单击不使用动态创建按钮触发的事件,javascript,jquery,Javascript,Jquery,我已经在一个div.中动态创建了按钮,并为按钮绑定了单击和其他事件。但问题是,单击事件只会为第一个单击的按钮触发一个。其他绑定事件也会发生同样的情况。示例代码是 $('#divButtons input[type=button]').each(function () { $(this).bind('mouseover', function (e) { // some work }).bind('mouseout', function (e) {

我已经在一个div.中动态创建了按钮,并为按钮绑定了单击和其他事件。但问题是,单击事件只会为第一个单击的按钮触发一个。其他绑定事件也会发生同样的情况。示例代码是

 $('#divButtons input[type=button]').each(function () {
     $(this).bind('mouseover', function (e) {
         // some work
     }).bind('mouseout', function (e) {
         // some work
     }).bind('click', function (e) {
         // some work
     });
 });
document.ready()
上绑定时效果很好,但在我的例子中,按钮是在DOM就绪之后创建的


我还想知道为什么它的行为是这样的…?

如果使用jQuery 1.7+go for on(),实际上不需要每个()


用最近的非动态元素替换委托事件处理程序的文档。

如果使用jQuery 1.7+go for on(),则实际上不需要每个()


将文档替换为委托事件处理程序最近的非动态元素。

“在DOM就绪后很久创建的按钮”-那么该代码何时执行?在元素存在之前或添加到页面之后?当然在元素存在之后…“在DOM就绪之后创建的按钮”-那么这段代码何时执行?在元素存在之前或添加到页面之后?当然,在元素存在之后…是的,事实上,每天都会发布数千份关于这个问题的精确副本,并且它们总是以相同的方式解决,太棒了@是的,这个问题以某种形式每天出现大约50次。而且总是有很多答案只使用正则on()方法,而不是委托方式。你可能认为搜索这个网站或者阅读jQuery网站上的文档应该很容易,尽管我意识到这可能会让jQuery的新手感到困惑。@adeneo我还想知道为什么它会这样…?@Talha-它会这样,因为javascripts事件处理程序只能在绑定时对实际存在的元素进行设置。通过将事件处理程序绑定到一个存在的元素,如
document
,并侦听从较低元素冒出的事件,我们将事件处理程序“委托”到父元素,即使稍后动态添加元素,它也能工作。@adeneo我们可以使用jquery的live()吗?我用过它,它能用吗?这两者之间有什么区别?是的,事实上,每天都会有数千份关于这个问题的精确副本发布在网站上,而且它们总是以同样的方式解决,令人惊讶@是的,这个问题以某种形式每天出现大约50次。而且总是有很多答案只使用正则on()方法,而不是委托方式。你可能认为搜索这个网站或者阅读jQuery网站上的文档应该很容易,尽管我意识到这可能会让jQuery的新手感到困惑。@adeneo我还想知道为什么它会这样…?@Talha-它会这样,因为javascripts事件处理程序只能在绑定时对实际存在的元素进行设置。通过将事件处理程序绑定到一个存在的元素,如
document
,并侦听从较低元素冒出的事件,我们将事件处理程序“委托”到父元素,即使稍后动态添加元素,它也能工作。@adeneo我们可以使用jquery的live()吗?我用过它,它能用吗?这两者有什么区别?
$(document).on({
    mouseover: function(e) {
            // some work
    },
    mouseout: function(e) {
           // some work
    },
    click: function(e) {
           // some work
    }
}, '#divButtons input[type=button]');