Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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,由于.live()已被弃用,我开始使用.on() 我有以下代码: $('.myClass').on("click", function(event) { var args = '......'; SendAjax(args); }); SendAjax函数执行以下操作: SendAjax(args) { $.ajax( { type: "POST", url: webPageName, data: queryP

由于.live()已被弃用,我开始使用.on()

我有以下代码:

$('.myClass').on("click", function(event)
{
    var args = '......';

     SendAjax(args);
});
SendAjax函数执行以下操作:

SendAjax(args)
{
    $.ajax(
    {
        type: "POST",
        url: webPageName,
        data: queryParams+'&'+unique,
        success: function(result)
        {
            MyReturnFunction(result);
        }
    });
}
ajax将返回此函数:

MyReturnFunction(response)
{
      $('.myClass').html(response);
}
但是在这个MyReturnFunction()之后,.myClass上的事件不再工作。如何使用.on()或.bind()修复此问题?

函数的
.on()
可以使用额外的参数:

$('body').on('click', '.myClass', function() { ... });
这就是
.live()
为您所做的,但它是一种向后的API设计。现在,您必须决定将委托处理程序放置在何处。body元素是一个很好的默认值,但它可以是任何父元素。有时候,在处理表中的单击时,最好在
元素处进行绑定(尽管主体也可以正常工作)

所以基本上规则是当你过去写:

$('something').live('event-name', function() { ... })
你写道:

$('container-selector').on('event-name', 'something', function() { ... })

“容器选择器”表示您希望将实际事件处理程序放置在何处—检查冒泡事件的目标是否与给定的“某物”选择器匹配的容器选择器。如前所述,您可以传递事件名称列表(用空格分隔),而不仅仅是一个。还有一个变体可以让您将对象映射事件名称传递给函数。

函数是否处于文档就绪状态?@chris否,不太可能。事件冒泡发生在浏览器内部,如果您在一个复杂的页面中也考虑到它,那么嵌套的级别就没有那么多了。此外,这就是
.live()
的工作原理-它总是使用
(编辑我的意思是“在浏览器的内部代码中,而不是在JavaScript中”)