我有一些JQuery代码如下:
$("#sh-zone-button-cart-menu").live("click", function(event)
{
event.preventDefault();
$("#sh-zone-cart-menu").toggle(0, function(){
if($(this).is(":visible")){
$(this).siblings(".sh-zone-button-link-menu-content").hide();
$("#sh-zone-button-cart-menu").parent().removeClass("current");
//need to reference (this) for $("#sh-zone-button-cart-menu") here
}
});
$("#sh-zone-button-cart-menu").parent().toggleClass("current");
});
我正试图从另一个子元素中访问我的初始点击的这个引用,即我希望得到这个在我的live()方法的第一个大括号之后可用的引用。但是,我需要从另一个子元素内部访问它,即在我的toggle()方法中。
我该怎么做?
感谢。
答案 0 :(得分:12)
将this
保存为本地变量:
$("#sh-zone-button-cart-menu").live("click", function(event) {
// This line saves the current 'this' as a local variable
// that can be accessed by inner functions
var thisInClick = this;
event.preventDefault();
$("#sh-zone-cart-menu").toggle(0, function(){
if($(this).is(":visible")){
$(this).siblings(".sh-zone-button-link-menu-content").hide();
$("#sh-zone-button-cart-menu").parent().removeClass("current");
//need to reference (this) for $("#sh-zone-button-cart-menu") here
$(thisInClick).doSomething();
}
});
$("#sh-zone-button-cart-menu").parent().toggleClass("current");
});
答案 1 :(得分:3)
这是一个淡化的样本,向您展示一般技术。
$("#sh-zone-button-cart-menu").live("click", function(event)
{
var that = this;
$("#sh-zone-cart-menu").toggle(0, function(){
alert($(that).attr('id'));
alert($(this).attr('id'));
});
});
答案 2 :(得分:2)
您可以在变量中保存对this
的引用,以便稍后使用。
$("#sh-zone-button-cart-menu").live("click", function(event)
{
event.preventDefault();
var that = this;
$("#sh-zone-cart-menu").toggle(0, function(){
if($(this).is(":visible")){
$(this).siblings(".sh-zone-button-link-menu-content").hide();
$("#sh-zone-button-cart-menu").parent().removeClass("current");
//need to reference (this) for $("#sh-zone-button-cart-menu") here
$(that).show(); // <= "that" is sh-zone-button-cart-menu
}
});
$("#sh-zone-button-cart-menu").parent().toggleClass("current");
});
答案 3 :(得分:0)
在实时回调中,你有另一种方法'切换'。这里的this
关键字是指ID为$('#sh-zone-cart-menu')的特定元素。
如果要访问该引用,只需使用该选择器即可。