我遇到了这个非常奇怪的场景。 这不会隐藏H1:
if ($('#content h1').hasClass('active')) {
$(this).hide();
}
只有这样:
if ($('#content h1').hasClass('active')) {
$('#content h1').hide();
}
为什么我不能使用(这个)?脚本有问题吗?
答案 0 :(得分:3)
这是正确的行为。在if
语句this
语句的上下文中,不包含对h1
元素的引用,而是document
元素(如果您在函数内部,则为函数)。
答案 1 :(得分:0)
你可以这样做:
$('#content h1').foreach(function() {
if (!$(this).hasClass('active')) {
$(this).hide();
}
});
在这种情况下,正如Jan解释的那样,这将在您期望的上下文中(标题元素)。
答案 2 :(得分:0)
你想要的可能是
var h1 = $('#content h1')
if (h1).hasClass('active')) {
h1.hide();
}
如上所述,您的“此”将不会引用您的对象。
答案 3 :(得分:0)
语句$('#content h1').hasClass('active')
返回一个布尔值(true或false),而不是jQuery对象,这是您尝试使用$(this)
的对象。请参阅hasClass
here的使用情况。
如果您尝试对与某个选择器匹配的所有元素执行操作,请尝试使用此选择器:
$("#content h1.active").hide();
这会查找id
属性为“content”的所有元素,其中包含h1
元素,其中class
属性为“active”,并将其全部隐藏。