1

我见过很多人使用 bind 或 on 函数而不是直接事件触发器等

  $(document).bind('click', function(){
        alert('Fired');
    });

代替

  $(document).click(function(){
alert('Fired');
 });

功能相同

$('p').on('click', function()({
alert('fired');
 });

代替

 $('p').click(function()({
  alert('fired');
 });

有人可以解释一下吗?

4

2 回答 2

2

.on() 的 jQuery 文档

.click().on('click', handler). 完全没有区别。所以你不妨坚持.on()并保存那个额外的函数调用。

.bind() 的 jQuery 文档

从 jQuery 1.7开始.bind().live().delegate()方法已被.on(). 这些函数将在 jQuery 的未来版本中删除。该.on()方法是将事件处理程序附加到文档的首选方法。

在内部,jQuery 将所有这些方法和速记事件处理程序设置器映射到该.on()方法,进一步表明您应该从现在开始忽略这些方法并只使用.on()

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
},
live: function( types, data, fn ) {
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
},
delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn );
}
于 2013-04-09T22:32:19.843 回答
0

我几乎在任何地方都使用 .bind 或 .on 。我几乎从不使用.click。原因如下:

如果您想让您的网站或网络应用程序跨平台兼容,并且您希望用户在计算机上“单击”按钮并在 iPad 或其他移动设备上“点击”按钮,.click 可能对你不好。

我使用这样的东西:

$("#myButton").on(inputType(), functionHandler(){console.log("you have clicked or touched myButton!"});

function inputType(){
    if(getUserDevice != "computer"){
        return "touchend";
    }else{
        return "click";
    }
}

function getUserDevice(){
    //code in here determine if it's a computer or a "touch device"
    //return "computer";
}
于 2013-04-10T00:02:33.410 回答