jQuery` this`范围问题

时间:2016-05-04 10:20:03

标签: javascript jquery this

我在一个地方定义了一个全局函数:

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")。 如何使这项工作?

4 个答案:

答案 0 :(得分:4)

根据当前实现,this不引用调用该函数的元素。它指的是window个对象。

您需要将当前元素上下文(即this)传递给函数

onClick='addToCart(this)'

并修改函数以接受元素作为参数。

function addToCart (elem){
    var prodText = $(elem).parent().siblings(".item1").text();
    $("#"+prodId+"shopC").children(".item1").text(prodText);
    alert(prodText);
}

答案 1 :(得分:1)

普通函数中基本上this将指向window。您必须将this上下文传递给内联处理程序onClick='addToCart(this)'。接收它并在事件处理程序中使用它,如下所示。

function addToCart (_this){
  var prodText = $(_this).parent().siblings(".item1").text();

答案 2 :(得分:0)

你必须在你内联调用addToCart函数的地方传递这个关键字然后你可以捕获那个元素

onClick='addToCart(this)'

答案 3 :(得分:0)

函数中的

var sLoggedInUser = <%= Html.Json(PageMethods.GetSession_LoggedInUserName())%>; 对象未指向您添加this函数的对象。它指向onClick对象。

您需要将window作为参数传递给您的函数。

this

并在function addToCart (trigger) { // Code goes here } 中致电addToCart(this)

在此处详细了解javascript中的this