javascript - jQuery 中的链接函数和使用回调函数有区别吗?

标签 javascript jquery

链接函数(例如 $('#id').function1().function2();)和使用函数作为回调函数(例如 $ ('#id').function1(function2());)?

例如,当单击 div#nr1div#nr2 时,以下代码(对我来说)执行完全相同的操作,只是使用回调函数更加冗长:

<html>
<head>
<title>PageTitle</title>
<style>
div#nr1,
div#nr2 {
    width: 100px;
    height: 100px;
    background-color: #ccc;
}

</style>
</head>
<body>

<div id="nr1">A</div>
<br />
<div id="nr2">B</div>

<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
$(function() {

$("#nr1").click(
    function() {
        $(this).fadeToggle(1000).fadeToggle(1000);
    });

$("#nr2").click(
    function() {
        $(this).fadeToggle(1000, function() {
            $(this).fadeToggle(1000);
        });
    });

});
</script>
</body>
</html>

什么时候建议使用其中一种方法?

最佳答案

这两种方法有很大的区别。在您的示例中没有区别,因为您想在同一个对象上执行该方法。

我将从相似之处开始。这两个方法都会在前面的方法完成后调用。(这里没什么新内容)。

第一个方法,方法链接通常会将对象上的所有更改传递给该函数,因此如果您有

$('.my-class').method1().method2();

method1()method2() 在 DOM 对象 $('.my-class') 上执行,更改它们上的某些内容(当然,返回this ,以便它们可以链接起来)。如果您注意到,我一开始就说“通常”,这是因为链式方法可以操作其他对象,而不一定是它们传递的对象(但这对于可链式函数来说是一种奇怪的行为)。

如果您希望回调操作同一个对象 $(this) (就像在您的代码中一样),则第二种方法 callbacks 是没有用的。如果您将回调用于可链接方法的目的,那么您的代码将不那么可读。如果您希望在函数末尾对其他对象执行某些操作,通常会使用回调方法,如下所示:

$('.my-class').method1(function(){
    $('#my-id').method2();
});

例如,animate 方法集成了两种实践。如果您希望使用相同的动画来操作前一个对象,请将它们链接起来,但如果您希望在函数末尾更改变量,请回调它。

关于javascript - jQuery 中的链接函数和使用回调函数有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252362/

相关文章:

php - 什么 HTML 到 PDF 库处理 javascript?

javascript - NULL 与 MySQL、PHP、JSON 和 JavaScript

javascript - 使用箭头键导航多步骤表单?

javascript - 单击另一个中的处理程序

javascript - jQuery 可调整大小的奇怪行为

javascript - 读取未知属性的名称

javascript - 将参数从 View 传递到 Controller Razor

javascript - 根据输入表单中输入的内容分别弹出不同的表单

javascript - 在调用 ajax-Jquery 之前取消绑定(bind)和关闭不起作用

javascript - 如何在 JavaScript 中设置 div 的百分比宽度?