繁体   English   中英

jQuery`this`范围问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM