8

假设我有一个 div,并且我想让某个代码在用户单击该 div 时运行。我可以通过 2 种方式做到这一点。

HTML

<div id="clickme">Click Me</div>

Javascript

$(document).ready(function(){
    $('#clickme').click(function(){
        //Other code here doing abc.
    });
});

第二种方法是调用一个函数,该函数正是这样做的,但它是由一个函数调用的

<div id="clickme" onclick="clickme()">Click Me</div>

Javascript

function clickme(){
    //Other code doing abc.
}

我的问题是这两个代码都在做同样的事情吗?哪个更有效和推荐?

4

3 回答 3

2

这取决于。通常,如果它很简单,我更喜欢使用 onlick=""。

另一方面,如果它更复杂并且你想要执行大量代码,我更喜欢使用绑定事件以提高可读性。

老实说,我相信 onclick="" 在性能/内存使用等方面更好。您使用的绑定事件在 jquery 层中,并且使用 onclick 事件直接从您的元素调用。

这是一个选择的问题,真的。

我喜欢绑定事件的一点是,您可以无限可能地绑定和捕获点击或击键。还有 jquery 插件来增强绑定事件,例如延迟绑定等(延迟绑定是当您按下一个键并且代码在您按下它后执行 x 秒数时,这在您键入时进行搜索时很棒通过ajax,因为它阻止了每次按键的请求)

如果您需要更多信息,请告诉我。

希望我给了你一个很好的见解:)

于 2013-02-28T07:39:56.080 回答
1

这取决于您是否喜欢:

1) 一个匿名函数绑定在 JQuery 的文档就绪事件上

这意味着您的命名空间不会被您不关心的另一个函数名称弄乱。这也意味着代码与其余的初始化例程一起。它还允许您绑定多个事件。

2) 一种绑定命名函数的声明方式。

这意味着您的函数需要相应地命名,您必须搜索文档以查看它是否/在哪里绑定。它也少了一个选择器调用,所以当然它在速度方面更有效。

为了编码清晰,大多数时候我会建议您将 javascript 初始化代码与 HTML 声明分开。

于 2013-02-28T07:47:56.107 回答
1

使用 .click(function(){ } 更好,因为它遵循标准事件注册模型。

在这里你可以分配多个回调,

前任:

<script type="text/javascript">
$(document).ready(function() {
    $("#clickme").click(function() {
        alert("clicked!");
    });
    $("#clickme").click(function() {
        alert("I concur, clicked!");
    });
});
</script>

在这里,如果您使用 bind() 绑定您的点击功能,那么您可以根据需求取消绑定该特定功能。

于 2013-02-28T07:44:26.743 回答