我有一个实时函数触发'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');
答案 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。