2013-08-17 44 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()职能部门之间的差异 - 新版本

相关问题