检查当前单击的元素是否等于JQuery

时间:2017-04-30 11:53:40

标签: javascript jquery this

我已经在网上进行了研究,并在很长一段时间内测试了一个解决方案,但还是没能完成这项工作。所以我决定在这里创建一个帖子,即使它可能技术含量低,但我会为此付出代价,我付出了很多努力,希望有人可以提供帮助。

我的代码目前使用JQuery中的.click()函数,我的目标是在按钮上使用它,这样当我点击该按钮时,它会检查按钮的id是否匹配我在.js文件中设置的变量。换句话说,检查我点击的id上的内容是否等于我的“目标”。

这是带有问题的代码的一部分:

var target = '#vig_but_inc';

$(this).click(function() {

    if(this.id == target) {
        vigor.incStat(); // increase stats once
        console.log("hi"); // test if code fires
        $('#vig_res').html(vigor.current);
    }
});

请注意,如果我点击特定的预设按钮id,我已经检查了代码是否正常运行而没有匹配if,而没有id - 语句增加#vig_res的价值,这是我的目标。

然而,如前所述,如果涉及if 我正在尝试将点击的内容与我的target 匹配,即id名字我希望它匹配。我正在使用this检查我的点击,该点击在其他区域有效,但在这种情况下似乎不起作用。

我已经在评论中解释了这个变量目标全局范围:Check if the clicked div id matches with variable。它仍然无法正常工作。

我知道并测试了$(this).click(..,它会触发我点击的div内的代码。所以我认为问题在于之后,可能在this.id中,但我也在其他地方建议使用.is(),但它也不会那样。

我希望有人可以就如何解决这个问题给我一些见解,谢谢。

2 个答案:

答案 0 :(得分:3)

答案有点复杂,在触发点击时调用的匿名函数中,this不是被点击的元素,它是一个jQuery对象。您应该接受第一个参数event并使用event.target。另外,target不应包含#,因为.id仅返回名称。

因此,您的代码应如下所示:

var target = 'vig_but_inc';

$(this).click(function(event) {
    console.log(event.target);
    if(event.target.id == target) {
        vigor.incStat(); // increase stats once
        console.log("hi"); // test if code fires
        $('#vig_res').html(vigor.current);
    }
});

工作小提琴:https://jsfiddle.net/e8np0g9j/3/

答案 1 :(得分:0)

在调用点击函数之前使用所选的id和类,如

$('.class').click(function() {});