Javascript jQuery`this`范围问题
我在一个地方定义了一个全局函数:Javascript jQuery`this`范围问题,javascript,jquery,this,Javascript,Jquery,This,我在一个地方定义了一个全局函数: function addToCart (){ var prodText = $(this).parent().siblings(".item1").text(); $("#"+prodId+"shopC").children(".item1").text(prodText); alert(prodText); } 然后,我想在带有内联onClick事件的HTML元素中调用它: onClick='addToCart()' 它不起作用,但如
function addToCart (){
var prodText = $(this).parent().siblings(".item1").text();
$("#"+prodId+"shopC").children(".item1").text(prodText);
alert(prodText);
}
然后,我想在带有内联onClick
事件的HTML元素中调用它:
onClick='addToCart()
'
它不起作用,但如果我将函数代码直接放在onClick
事件中,它就起作用了,因此这一定是这个
范围问题。
关于这个
范围有很多问题/解释,但我必须承认,对于这个具体案例,我错过了一个简单而直接的答案(我尝试使用“使用严格”
,但也取得了成功)。
如何实现此功能?根据当前的实现
此
不涉及调用函数的元素。它指的是窗口
对象
您需要将当前元素上下文,即this
传递给函数作为
onClick='addToCart(this)'
并修改函数以接受元素作为参数
function addToCart (elem){
var prodText = $(elem).parent().siblings(".item1").text();
$("#"+prodId+"shopC").children(".item1").text(prodText);
alert(prodText);
}
基本上,
这个
在普通函数中会指向窗口
。您必须将this
上下文传递给内联处理程序onClick='addToCart(this)
。接收并在事件处理程序中使用它,如下所示
function addToCart (_this){
var prodText = $(_this).parent().siblings(".item1").text();
必须在内联调用addToCart函数的位置传递该关键字,然后才能捕获该元素
onClick='addToCart(this)'
函数中的此
对象未指向您将onClick
函数添加到的对象。而是指向窗口
对象
您需要将此作为参数传递给函数
function addToCart (trigger) { // Code goes here }
然后在onClick中调用addToCart(this)
在这里了解有关javascript的更多信息。以这种方式调用它onClick='addToCart(this)
并在方法中用从这里传递的参数替换它