Javascript 关于事件和其他函数
由于.live()已被弃用,我开始使用.on() 我有以下代码: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
$('.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中”)