Javascript JQuery嵌套了此引用
我有一些JQuery代码,如下所示:Javascript JQuery嵌套了此引用,javascript,jquery,Javascript,Jquery,我有一些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-men
$("#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");
});
我试图从另一个子元素中访问首次单击时的this引用,即,我希望在live()方法的第一个花括号之后获得this引用。但是,我需要从另一个子元素(即我的toggle()方法)中访问它
我该怎么做
谢谢。将此保存为局部变量:
$("#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");
});
您可以将对该的引用保存在变量中,以便以后使用
$("#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");
});
$(“#sh区域按钮购物车菜单”).live(“单击”,功能(事件)
{
event.preventDefault();
var=这个;
$(“#sh区域购物车菜单”)。切换(0,函数(){
如果($(this).is(“:可见”)){
$(this).sides(“.sh区域按钮链接菜单内容”).hide();
$(“#sh区域按钮购物车菜单”).parent().removeClass(“当前”);
//需要在此处为$(“#sh区域按钮购物车菜单”)参考(此)
$(that).show();//这是一个淡化的示例,向您展示一般技术
$("#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'));
});
});
在live回调中,有另一个方法“toggle”。此处的this
关键字引用ID为$(“#sh zone cart menu”)的特定元素
如果您想访问该引用,只需使用该选择器。关键是他不想再次选择,因为它已经作为this
提供。无需做额外的工作。谢谢Juan。这解决了问题。我只使用了var elem=$(this)然后在我需要的地方调用它。干杯。刚进入jQuery,就遇到了类似的问题。这个概念让我省去了很多麻烦。我很震惊这个概念没有得到更多的支持…你只是节省了我一些时间。我不知道JavaScript lambda函数可以捕获这样的局部变量!