Javascript 未捕获的TypeError:$(…).find(…).hasClass(…).show不是函数
不知道为什么这不起作用,但我希望能有第二双眼睛 是的,我正在引用jQuery库Javascript 未捕获的TypeError:$(…).find(…).hasClass(…).show不是函数,javascript,jquery,html,Javascript,Jquery,Html,不知道为什么这不起作用,但我希望能有第二双眼睛 是的,我正在引用jQuery库 var $current_selection; $('.nav-link').hide(); $('a').click(function () { current_selection = $(this).attr("class"); $('#nav').find("div").hasClass(current_selection).show(); }); 我的HTML <a href=
var $current_selection;
$('.nav-link').hide();
$('a').click(function () {
current_selection = $(this).attr("class");
$('#nav').find("div").hasClass(current_selection).show();
});
我的HTML
<a href="#" class="link-one">Nav Option One</a>
<div id="nav">
<div class="nav-link link-one">
<p>Test Link One</p>
</div>
</div>
测试链路一
我进入控制台时出错
未捕获的TypeError:$(…).find(…).hasClass(…).show不是一个
作用
返回布尔值,因此不能链接hasClass
你可以用
$('#nav').find("div." + current_selection).show();
如果当前所选内容包含多个类,则这些类将包含空格,选择器将无法按预期工作。要使其正常工作,所有空格都需要替换为
current_selection = $(this).attr("class").replace(/ /g, '.');
$('#nav').find("div." + current_selection).show();
hasClass()
返回true
或false
。您需要实际选择适当的元素:
$("#nav div." + current_selection).show();
当然,这只适用于当前所选内容只包含一个类名的情况。@FelixKling但是,
hasClass()
,所以我们没有丢失任何预期的功能。我猜。尽管$(“”)hasClass(“foo bar”)
返回true,而$(“”)hasClass(“foo baz”)
返回false:-/无论哪种方式,我都不太关心hasClass
,而更关心
的类属性可以包含多个类这一事实。只是要记住一点,它可能会帮助其他人。我在阅读文档和吸收信息方面真的很糟糕,所以像这样的事情可能看起来很简单,但它可以帮助一些人。Upvote也用于研究工作,即使您没有阅读文档,一个简单的或调试也会突出您的问题。与我的实际代码相比,我上面的示例是最小的,我确实尝试过调试,但在不知道hasClass
返回布尔值的情况下,我没有解决正确的问题。