传递给事件处理程序的jQuery参数在绑定时进行评估

时间:2014-04-04 16:38:26

标签: javascript jquery event-handling argument-passing evaluation

我有以下代码:

var profileToRemove = null;

//...

$("#buttonRemoveProfile").on("tap", {profile : profileToRemove}, removeProfile);

//...

function removeProfile(event){
   console.log(event.data);
   var profile = event.data.profil;
   if(profile==null || profile.name==null) {
      alert("Erreur lors de la suppression du profil");
   }
   else { /*remove profile*/ }
}

在点击“#buttonRemoveProfile”之前,“profileToRemove”设置为所需的值(不为空!)。 然而,我的函数removeProfile收到“null”(event.data是{profile:null})或者profileToRemove的初始值是什么。

那么如何将removeProfile的当前值传递给我的处理程序呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

on()中的数据参数接受一个对象,该对象的值在绑定时被锁定,以后更改profileToRemove变量不会以任何方式更新{{1} (你输错了)。

PROOF

由于您已经在更高的范围内拥有变量,因此直接使用它似乎更容易

event.data.profile

答案 1 :(得分:0)

更改您的设计,以便数据包含一个返回您想要的函数:

$("#buttonRemoveProfile").on("tap", {profile : function() {
        return profileToRemove;
    }
}, removeProfile);

function removeProfile(event){
   console.log(event.data);
   var profile = event.data.profile(); // Call the profile function
   if(profile==null || profile.name==null) {
      alert("Erreur lors de la suppression du profil");
   }
   else { /*remove profile*/ }
}

如果您想获得幻想,可以允许配置文件是函数或数据,并使用:

var profile = event.data.profile;
if (typeof profile == "function") {
    profile = profile();
}