Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript If语句使用$(this)失败,但使用绝对值_Javascript_Jquery_If Statement - Fatal编程技术网

Javascript If语句使用$(this)失败,但使用绝对值

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元素,而是引用文档元素(或函数,如果您在函数内部)。这是正确的行为。

我遇到了这种非常奇怪的情况。 这不会隐藏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();