Javascript If语句使用$(this)失败,但使用绝对值
我遇到了这种非常奇怪的情况。 这不会隐藏H1:Javascript If语句使用$(this)失败,但使用绝对值,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我遇到了这种非常奇怪的情况。 这不会隐藏H1: if ($('#content h1').hasClass('active')) { $(this).hide(); } 只有这样才能: if ($('#content h1').hasClass('active')) { $('#content h1').hide(); } 为什么我不能用这个?脚本有问题吗?这是正确的行为。在if语句的上下文中,此并不引用h1元素,而是引用文档元素(或函数,如果您在函数内部)。这是正确的行为。
if ($('#content h1').hasClass('active')) {
$(this).hide();
}
只有这样才能:
if ($('#content h1').hasClass('active')) {
$('#content h1').hide();
}
为什么我不能用这个?脚本有问题吗?这是正确的行为。在
if
语句的上下文中,此并不引用h1
元素,而是引用文档
元素(或函数,如果您在函数内部)。这是正确的行为。在if
语句的上下文中,此不引用h1
元素,而是引用文档
元素(或函数,如果您位于函数内部)。您可以:
$('#content h1').foreach(function() {
if (!$(this).hasClass('active')) {
$(this).hide();
}
});
在本例中,正如Jan所解释的,这将是您期望的上下文(heading元素)。您可以执行以下操作:
$('#content h1').foreach(function() {
if (!$(this).hasClass('active')) {
$(this).hide();
}
});
在本例中,正如Jan所解释的,这将是您期望的上下文(heading元素)。您想要的可能是
var h1 = $('#content h1')
if (h1).hasClass('active')) {
h1.hide();
}
如上所述,您的“this”不会引用您的对象。您想要的可能是
var h1 = $('#content h1')
if (h1).hasClass('active')) {
h1.hide();
}
如上所述,您的“this”不会引用您的对象。语句$('#content h1')。hasClass('active')
返回一个布尔值(true或false),而jQuery对象正是您试图使用$(this)
的对象。请参阅hasClass
的用法
如果要对与某个选择器匹配的所有元素执行操作,请尝试使用此选择器:
$("#content h1.active").hide();
这将查找具有id
属性为“content”的所有元素,这些元素包含具有class
属性为“active”的h1
元素,并将它们全部隐藏。语句$(“#content h1')。hasClass('active')
返回一个布尔值(true或false),与jQuery对象相反,这就是您试图使用的$(this)
。请参阅hasClass
的用法
如果要对与某个选择器匹配的所有元素执行操作,请尝试使用此选择器:
$("#content h1.active").hide();
这将查找具有id
属性为“content”的所有元素,这些元素包含具有class
属性为“active”的h1
元素,并将它们全部隐藏。更简单、更有效的方法是$(“#content h1.active”).hide();更简单、更高效的是$('#content h1.active').hide();