如何在实时外部id调用的函数内使$(this)相关

时间:2011-05-23 17:21:25

标签: jquery

我有一个实时函数触发'openwindow'函数,我还需要能够分别调用'openwindow'函数,因此我的'初始函数调用'。问题是,我的实时调用中的id#open-window是我希望能够将$(this)应用到(在openwindow函数中)的id。如果有人对如何实现这一点有任何建议,我将不胜感激。

function openwindow(user, token) {
if(user==''){
    var user = $(this).attr('data-name');
    var token = $('#token').attr('data-value');
}
//append some information

}

//event triggered on click
$('#open-window').live('click', openwindow);

//initial function call
openwindow('hey','hey');

4 个答案:

答案 0 :(得分:3)

很简单:

$('#open-window').live('click', openwindow);

function openwindow(event, user, token) {
 if(user==''){
    var user = $(event.target).attr('data-name');
    var token = $('#token').attr('data-value');
 }
}

答案 1 :(得分:1)

为什么你需要对完全不同的东西使用相同的功能?一个更好的方法可能是将它们分开:

function openwindow(user, token) {
    // do some work...
}

//event triggered on click
$('#open-window').live('click', function(e) {
    openwindow($(this).attr('data-name'), $('#token').attr('data-value'));
});

//initial function call
openwindow('hey','hey');

答案 2 :(得分:1)

不确定您想要的确切功能。但这是尝试修改你必须使用jQuery提供的事件对象。您可以使用此对象存储您自己的数据(如我所示)并获取原始dom对象。

这里有一些文档。 http://api.jquery.com/category/events/event-object/

function openwindow(event) {
   inUser = event.data.user;
   inToken = event.data.token;

   if(inUser=='default'){
      var user = $(event.target).attr('data-name');
      var token = $('#token').attr('data-value');
   }
//append some information
}

//event triggered on click
$('#open-window').live('click', { user : 'default', token : 'default' }, openwindow);

//initial function call
openwindow({ data : { user : 'hey', token :'hey' },
             target : '#somelocation that has a data-name' });

答案 3 :(得分:0)

对所有函数都有一个apply方法,允许你选择这个 功能的背景将是。

myFunction.apply(newThis, [arguments,in,a,array]);

这不是一个很好的编程约定,你应该在实时回调中使用匿名函数,并使用正确的参数调用openWindow。