JQuery .on事件和其他功能

时间:2013-01-21 06:03:04

标签: javascript jquery

由于不推荐使用.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()修复此问题?

1 个答案:

答案 0 :(得分:2)

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

$('body').on('click', '.myClass', function() { ... });

这就是.live()为你做的,但它是一个向后的API设计。现在您必须决定将委托处理程序放在何处。 body元素是一个很好的默认值,但它可以是任何父元素。有时当你处理表格中的事情点击时,最好在<table>元素处进行绑定(虽然身体也可以正常工作)。

所以基本上规则就是你曾经写过:

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

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

“容器选择器”表示您希望放置真实事件处理程序的位置 - 检查泡沫事件的目标是否与给定的“某事”选择器匹配的处理程序。和以前一样,您可以传递事件名称列表(用空格分隔)而不是一个。还有一个变体允许您将对象映射事件名称传递给函数。