我已经在网上进行了研究,并在很长一段时间内测试了一个解决方案,但还是没能完成这项工作。所以我决定在这里创建一个帖子,即使它可能技术含量低,但我会为此付出代价,我付出了很多努力,希望有人可以提供帮助。
我的代码目前使用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()
,但它也不会那样。
我希望有人可以就如何解决这个问题给我一些见解,谢谢。
答案 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);
}
});
答案 1 :(得分:0)
在调用点击函数之前使用所选的id和类,如
$('.class').click(function() {});