[英]jQuery `this` scope issue
我在一个地方定义了一个全局函数:
function addToCart (){
var prodText = $(this).parent().siblings(".item1").text();
$("#"+prodId+"shopC").children(".item1").text(prodText);
alert(prodText);
}
然后,我想在带有内联onClick
事件的HTML元素内调用它: onClick='addToCart()
'
它不起作用,但是如果我将函数代码直接放在onClick
事件中,它将起作用,因此这一定是this
范围的问题。 关于this
范围有很多问题/解释,但我必须承认,我错过了针对此特定案例的简单直接答案(我也尝试将"use strict"
用于成功)。 如何使这项工作?
按照当前的实现, this
并不涉及调用该函数的元素。 它指的是window
对象。
您需要将当前元素上下文,即this
的功能
onClick='addToCart(this)'
并修改函数以接受元素作为参数。
function addToCart (elem){
var prodText = $(elem).parent().siblings(".item1").text();
$("#"+prodId+"shopC").children(".item1").text(prodText);
alert(prodText);
}
基本上this
纯函数内将指向window
。 您必须this
环境传递给内联处理程序onClick='addToCart(this)'
。 接收并在事件处理程序内部使用它,如下所示。
function addToCart (_this){
var prodText = $(_this).parent().siblings(".item1").text();
您必须在内联调用addToCart函数的地方传递此关键字,然后才能捕获该元素
onClick='addToCart(this)'
函数中的this
对象并不指向添加onClick
函数的对象。 而是指向window
对象。
您需要this
作为参数传递给函数。
function addToCart (trigger) { // Code goes here }
并在onClick
调用addToCart(this)
。
了解更多关于this
在JavaScript这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.