2

我有以下代码:

$(document).ready(function(){    
    $("button.continue").click(function(){
        $(this).html("Hello!");
    });
});

这很完美,但我想把整个事情变成这样:

$(document).ready(function(){    
    $("button.continue").click().html("Hello!");
});

我的问题是:

  1. 我可以使用 click() 和以下事件,在这种情况下 html() 以这种方式(不转向功能部分)吗?
  2. 如果没有,为什么我不能这样做,因为我会想到这背后的工作原理,例如:当用户单击所选元素时,将其中的 HTML 文本更改为其他内容。
  3. 如果这不是思考或推理其背后逻辑的方式,我应该如何处理
4

2 回答 2

5

jQuery 函数返回对象本身,因此您可以链接方法,例如:

element.css('attribute', 'value').html('value').append('element').click(function() {});

但是,当绑定事件处理程序时.click(),它必须将逻辑存储在事件发生时调用的回调中。

链接实际如何工作的示例:

var testObject = {
    methodA : function() {
        // some logic
        return this;
    },
    methodB : function() {
        // some logic
        return this;
    }
}
// you can than simply call
testObject.methodA().methodB();
于 2013-02-18T23:27:42.060 回答
0

可以构建一个按照您的意愿工作的 API,但实际上这不是 jQuery 的工作方式,它是您正在使用的特定库。jQuery click 方法采用一个事件侦听器函数,只要单击匹配的元素就会调用该函数。这是一种典型的函数式程序员模式,通常用于现代的基于事件的 UI。

如果您认为这种代码风格有点不可读,请尝试使用 CoffeeScript,它是一种编译为 javascript 的语言,并且使此类常见模式更易于实现。CoffeeScript 中的等价物类似于:

$(document).ready ->
    $('button.continue').click ->
        $(this).html "Hello"

欲了解更多信息,请查看:http ://coffeescript.org/

于 2013-02-18T23:45:37.910 回答