对不起问题标题,我知道它的措辞不是很好,但我无法解释我在摘要中提出的要求。
我有一个与元素的click事件绑定的JQuery函数。由于可能存在缺陷的原因(除了对我个人更有意义),在这个函数中我称之为另一个函数。从第二个函数开始,我希望能够从第一个函数调用$(this)
,但我不确定它是否可行,或者如果可以的话怎么做
示例
适用的JQuery功能
$('.member-div a').on("click",function(f){
f.preventDefault();
var x = $(this).parent('div').attr('id').slice(-1);
$('.member-div').hide();
if($(this).hasClass('next')){
var y = parseInt(x)+1;
};
if($(this).hasClass('back')){
var y = parseInt(x)-1;
};
$('#section'+y).show();
});
我正在尝试做什么
$('.member-div a').on("click",function(f){
f.preventDefault();
newfunc();
});
function newfunc(){
var x = $(this).parent('div').attr('id').slice(-1);
$('.member-div').hide();
if($(this).hasClass('next')){
var y = parseInt(x)+1;
};
if($(this).hasClass('back')){
var y = parseInt(x)-1;
};
$('#section'+y).show();
};
我想我理解为什么第二种方法不起作用($(this)
不会是初始函数的锚标记),但我对如何使其工作感到迷茫
如果我必须,或者如果有人能够解释/为什么它更好,我会坚持原有的例子!
由于
答案 0 :(得分:1)
使用this
时要小心,因为根据调用函数的上下文,最终可能会使用意外值。
相反,您应该考虑使用参数:
$('.member-div a').on("click",function(f){
f.preventDefault();
newfunc($(this));
});
function newfunc(item){
var x = item.parent('div').attr('id').slice(-1);
$('.member-div').hide();
if(item.hasClass('next')){
var y = parseInt(x)+1;
};
if(item.hasClass('back')){
var y = parseInt(x)-1;
};
$('#section'+y).show();
};
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以将'this'作为变量传递给另一个函数:
$('.member-div a').on("click",function(f){
f.preventDefault();
newfunc(this);
});
然后在新函数中通过参数捕获'this':
function newfunc(elem){}
答案 3 :(得分:-1)
您可以将this
引用传递给函数,如下所示:
$("a").on("click", function() {
foo(this);
});
function foo(obj) {
if ($(obj).hasClass("next")) {
// ...
}
}
$(obj)
的作用与$(this)
相同。