2013-02-18 110 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/