jQuery `is`不是一个函数。

4

我有如下HTML菜单:

<ul>
    <li><a href="index.html">Index Page</a></li>
    <li><a href="#some-page">Some Page</a></li>
</ul>

假设 var url = "some-page";
    $('#menu li a').prop('href')
                   .is('#' + url )
                   .parrent()
                   .addClass('active');

我一直收到错误消息.is不是一个函数。为什么?.is显然是一个函数。

非常感谢任何建议。


小心使用“ clearly is”。并非每个函数都定义在每种“对象类型”上 - 在这种情况下,typeof(String.prototype.is) == 'undefined' - Piskvor left the building
你拼写“parent”这个单词也错误了。 :) - BNL
2个回答

9

在调用is()之前,您正在调用的prop()方法会将href属性返回为字符串。

字符串没有is()方法。

尝试使用以下代码;

$('#menu li a').filter('[href="' + url + '"]').parent().addClass('active');

尽管您可以将其合并为一个选择器;
$('#menu li a[href="' + url + '"]').parent().addClass('active');

请注意,is()返回truefalse,如果任何匹配的元素匹配选择器,则以下表单可用于使用is();请注意,is()返回truefalse,如果任何匹配的元素匹配选择器。
$('#menu li a').each(function () {
    if ($(this).is('[href="#' + url +'"]')) {
        $(this).parent().addClass('active');
    }
});

查看属性等于选择器


2

prop()方法返回属性是否被设置以及其值,即truefalse或字符串 - 对于布尔值或字符串没有is()方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接