2013-08-17 72 views
0
<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>css demo</title> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
    $(document).ready(function(){ 
     $('button').click(function(){ 
      //$(this).clone().appendTo('div'); 
      $(this).clone().prependTo('div'); 
     }) 

     $('button').bind('click', function(){ 
      $(this).clone().appendTo('div'); 
     }) 
    }); 
</script> 
</head> 
<body> 
    <h1> My WebSite</h1> 
    <div> 
     <button data-file="day">Day</button> 
     <button data-file="night">Night</button> 
    </div> 
</body> 
</html> 

當我將代碼克隆到我的div標記中時,我沒有看到這兩者之間有什麼區別。綁定方法有什麼特別之處?jQuery中的綁定和點擊之間的確切區別?

http://api.jquery.com/category/events/

我一直在尋找的文檔,糾正我,如果我錯了......如果點擊綁定做同樣的事情,爲什麼他們有兩種不同的方式來達到同樣的?

+0

**確切的**區別在於一個有五個字母,另一個有四個字母,而且這兩個方法有兩個完全不同的名稱。他們在內部完全一樣。 – adeneo

+0

閱讀這個 http://stackoverflow.com/questions/2954932/difference-between-jquery-click-bind-live-delegate-trigger-and-on –

回答

1

綁定是通用,低級功能。 Click是一種快捷方式,是Bind的更高級別實現。綁定或多或少不贊成你應該使用「on」綁定。即

$('selector'.on("click", function() { 

}); 

釷之所以用「開」結合是你AVE利用事件代表團的選項。因爲你也可以這樣做

$('ul'.on("click", "li", function() { 
    //do something whenever one of the list items is clicked 
});  

這樣做的一個原因是你不必將一個事件綁定到每個列表項元素。相反,您可以將一個事件附加到父項。假設你有200個列表項,如果你使用點擊

$('li'.on("click", function() { 
    //thing to do on click 
}); 

每個元素將有自己的監聽器,這將是低效的。 但通過定位ul包裝器父級並監聽事件冒泡,只需要附加到一個元素。這樣更有效率。在互聯網上查找事件傳播或事件冒泡。一個簡單的解釋是,當事件發生在DOM中的事件傳播給父母時。所以如果你點擊一個li,那麼ul也會收到事件,就像任何其他的包裹ul和body的div一樣,並且一直到窗口。

+0

感謝您的好解釋,有一件事沒有深入我腦海中[綁定意味着將一個事件附加到一個元素上嗎?] – theJava

+0

和on方法可以完成[live,bind和delegate]之前做的事情。 – theJava

2

您的示例運行完全相同的代碼 - click是一個快捷方式處理程序。請注意,on現在是通過bind附加事件的首選方法。

使用on最常見的原因(在以前的版本中,bind)是它可以讓你掛接自定義事件:

$('.foo').trigger('someEvent.myPlugin'); 

// in another file, far far away 
$('.foo').on('someEvent', function() { 
    // deal with someEvent on foo 
}); 

最常見的,你可以只使用clickchange等實用工具。

+0

我可以使用('綁定',函數(){ })像這樣... – theJava

+0

爲了什麼目的?如果你想把事件的綁定作爲一個事件,那麼沒有。 –

1

的jQuery已經提供了一些實用功能,如click()change()等註冊爲普通事件處理程序,它們在內部使用像bind()on()職能部門之間的差異 - 新版本

相關問題