我需要帮助理解$(this).是否有可能在括号内缩小“this”的焦点,或者“this”是否排除了使用任何其他属性?
例如:我不明白为什么这段代码:
$(this).children("div")
不能像这样重写:
$(this +" div")
而不必诉诸于:
$('#'+$(this).attr("id")+" div")
另外,你能在JQuery文档中指出’this’吗?由于显而易见的原因,很难将“this”用作搜索词.
解决方法
this
不是jQuery“的东西”,而是
basic JavaScript one.它不能像你在示例中那样重写,因为它是一个对象,特别是DOM元素或jQuery对象(取决于你的上下文)重新).所以,如果你这样做:
$(this + " div")
你真正要做的是在this
上调用.toString()
来连接字符串,结果是:
$("[object Object] div")
….这不是一个有效的选择器.
至于进一步阅读,我相信this article仍然是了解这个(上下文关键字)含义的最佳参考/资源之一.
根据评论请求,在不同的地方有一些例子:
>事件处理程序,例如:$(“selector”).click(function(){alert(this);});
>这是指触发事件处理程序的DOM元素.
>在jQuery插件中,例如:$.fn.myPlugin = function(){alert(this); });
>这是插件被调用/链接的jQuery对象,例如:$(“selector”).myPlugin();,这就是$(“selector”)jQuery对象.
>在任何泛型函数中,例如:function myFunc(){alert(this); };
>这是你所处的背景,无论是对象还是其他东西,只有几个例子:
> $(“selector”).click(myFunc); – 这是DOM元素,如上所述
> $(“selector”).click(function(){myFunc();}); – 这是全球内容,窗口
> myFunc.call(whatThisIs,arg1,arg2); – 这就是这个
>有关详细信息,请参阅Function.call()
和Function.apply()