2014-09-01 55 views
0

作为jQuery中的新手,我坚持一个问题。这个想法如下: 我们有一个管理面板,您可以点击按钮添加新成员或在LINK上编辑现有人员。两次点击触发同一个窗口,不同之处在于LINK提供了一个ID,该ID用于获取成员的数据并将其填入表单中。标准,不是吗?这是从别人做出的,今天我试图覆盖一些功能并添加一些新的东西。我得到这段代码:不同场合下添加/删除事件

 // This happens to work. 
     var handler_for_edit_window = function() { 
      jQuery("#company_name_field").keyup(function(){ 
       jQuery("#company_name_feed").val(this.value.replace(/ /g, "_").toLowerCase()); 
      });   
     }; 

     // I smelt the problem is somewhere here. 
     jQuery(".admin_buttons").bind("click", handler_for_edit_window); 
     jQuery(".edit_row_btn").unbind("click", handler_for_edit_window); 

“handler_for_edit_window”完美地工作,并做它应该做的。但是,老板只想在新成员上添加功能,并在现有成员上删除它。因此,我在“handler_for_edit_window”中移动了该功能,并尝试根据BUTTON/LINK绑定/解除绑定。什么INFACT情况是这样的:

  1. 点击按钮(添加新成员) - 具有功能
    1.1。点击链接(编辑现有) - 具有功能

  2. 点击LINK(编辑) - 无功能
    2.1。点击按钮(新) - 具有功能
    2.2。点击链接(编辑) - 再有功能

的决定 - 当我们点击它添加所需要的按钮,但是当我们点击链接,我们还有机会,而且没有办法将其删除..

如果你给我一些观点和建议,会很高兴。

回答

0

如果我理解正确,您需要标记click事件,以便您可以单独取消设置。 jQuery的可以让你做它像这样:

$(".admin_buttons").on('click.mytag', function() { }); 
$(".edit_row_btn").off('click.differenttag', function() { }); 

老实说,我真的不明白您的确切情况(你的代码是容易混淆的奇怪 - 为什么要结合,然后立刻解除绑定另外,你拆散了。函数 - 你期望做什么?运行一个函数,当它是而不是点击?我不知道...)。但我们希望,你得到的事件标记的想法,以及如何使用它

两件事:

  1. 使用.on,因为.bind是已经过时了一段时间
  2. 的旧语法
  3. 可以使用$而不是每次都
+0

的想法是有一个相同的窗口写jQuery,这将出现在点击任何链接或按钮......但不同的行为 - 在第一方案H andler_for_edit_window = function(){});应该引发,在第二种情况下 - 不应该。看起来,一旦调用了handler_for_edit_window,它就会保持它的状态,而不管第二次点击是否在LINK上(我们应该“解除”该函数)。我曾尝试使用.on,.bind/.unbind,简单.click事件..没有运气。 (使用'jQuery'是因为不确定我的新雇主的源代码是否还有其他js框架......预防前期) – Musician 2014-09-02 05:47:50

+0

@Musician'bind','on'或'click'之间没有明显区别(最后一个只是'.on('click'')的简写,所以实际上你没有任何理由得到不同的结果,我不知道你的意思是什么*“这个想法是有一个相同的窗口”*你需要明白我没有相同的参考框架,所以我没有真正理解你在说什么,如果你编辑你的问题并添加一些有用的细节将会是有益的(JSFiddle演示会非常棒) – yuvi 2014-09-02 05:59:20