2013-02-18 108 views
1

我有以下代码:jQuery的点击无功能

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

其中一期工程完美,但我希望把整个事情弄成这个样子:

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

我的问题是:

  1. 我可以用点击()和下面的事件,在这种方式这种情况下,HTML()(无转向功能部分)?
  2. 如果不是,为什么我不能这样做,因为我认为这背后运作的,是这样的:当 选择的元素在用户点击,在它更改HTML文本到别的东西。
  3. 如果不考虑或理由背后的逻辑的方式,我应该如何处理这个
+6

这不是如何JavaScript的作品。它无法读懂你的想法,它需要按照规范让它按照你的意图行事。对于所有语言来说,情况也是如此...... – PinnyM 2013-02-18 23:24:21

+3

基本上:不,你不能这样做。 ['。点击()'](http://api.jquery.com/click)不带参数为['.trigger( '点击')']的速记(http://api.jquery.com/触发)。 – 2013-02-18 23:37:03

回答

4

一个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(); 
+2

其实...调用'点击()'不带任何参数模拟点击事件IIRC。 – 2013-02-18 23:38:42

+0

你说得对 - 错过了在匆忙是最后一个。现在已更新。感谢您指出了这一点。 – insertusernamehere 2013-02-18 23:40:10

0

一个可以构建你的愿望的作品的API,但是这不,事实上,jQuery的工作方式,这是您正在使用的特定库。 jQuery的click方法需要一个事件监听器函数,只要点击一个匹配的元素就会调用它。这是一个典型的功能性程序员模式,它在基于事件的现代UI中经常使用。

如果您认为这种风格的代码有点不可读,请尝试使用CoffeeScript,一种可以编译为JavaScript的语言,并使这样的通用模式更易于实现。在CoffeeScript中等价会是这样的:

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

欲了解更多信息,请访问:http://coffeescript.org/