通过这两种不同的方法调用jQuery功能的优缺点是什么?

时间:2013-03-21 13:47:14

标签: javascript jquery

我试图了解这两种调用JavaScript / jQuery函数的方式之间的差异(如果有的话)。

方法1,在document.ready()中:

$('body').on('click', 'a.popup', popup);

然后

function popup() {
    $(this) // do something    
}

方法2,在document.ready()中:

popup();

然后

function popup() {
    $("a.popup").click(function (e) {
        // do something here
    });
}

所有建议都表示赞赏。

2 个答案:

答案 0 :(得分:6)

在方法2中,popup函数可能只被调用一次,否则你会多次附加相同的函数onclick,这可能不是你想要的。 因此,将popup函数的主体写在document.ready()以外的其他地方没有什么好处。

方法1的优点是,如果您想将相同的功能附加到各种事件和/或各种元素,例如, onclickonmousemove等。这样你就不必再写两次函数体了。

简而言之,我没有看到方法2中的好处,而我在方法1中看到了一些。

答案 1 :(得分:0)

我不太确定,但我想你问的是调用jQuery .on()方法和jQuery .click()方法有什么区别,对吗?

如:

$someEl.on('click', someFunc);
// or
$someEl.click(someFunc);

像这样,两者都非常相同。但是使用.on()方法,您有机会将namespacing(在第一个链接中解释)引入元素的事件。像这样:

$someEl.on('click.do1', someFunc1);
$someEl.on('click.do2', someFunc2);

因此,如果在以后的进度中您只想删除或触发一个回调函数(someFunc1,someFunc2),您可以通过调用:

来执行此操作。
$someEl.off('click.do1');
$someEl.trigger('click.do2');

希望这有帮助