jquery不会将类添加到指定的数组

时间:2012-02-25 23:01:40

标签: javascript jquery arrays addclass

我有以下HTML

<span class="post-labels">
    <a href="http://myblog.blogspot.com/search/label/jQuery%20Downloads">jQuery Donwloads</a>
    <a href="http://myblog.blogspot.com/search/label/jQuery">jQuery</a>
    <a href="http://myblog.blogspot.com/search/label/mootools">mootools</a>
    <a href="http://myblog.blogspot.com/search/label/css">css</a>
    <a href="http://myblog.blogspot.com/search/label/blogger">blogger</a>
    <a href="http://myblog.blogspot.com/search/label/wordpress">wordpress</a>
</span>​

下面的jquery为<a> http://jsfiddle.net/qbrN8/10/

http://myblog.blogspot.com/search/label/jQuery%20Downloads元素的类添加为ACCEPT
$(".post-labels a").each(function(){
var domain = "http://myblog.blogspot.com/search/label/";
var dontadd = "jQuery Downloads";
var encode = encodeURI(dontadd);    
var url = domain + encode; 
var posta = $(this).attr("href");
if(posta!=url){
$(this).addClass("addedclass");
}        

});


我正在尝试创建一个数组以使用下面的jquery排除多个指定的URL但是它不起作用http://jsfiddle.net/qbrN8/11/ ....我从未使用过数组,因此我不知道如何完全执行它。我有搜索,但我一直得到像var myarray[0] var myarray[1]这样的东西的结果,我宁愿有像var myarray = [];这样的数组

$(".post-labels a").each(function(){
    var domain = "http://myblog.blogspot.com/search/label/";
    var dontadd = [];
    dontadd.push("jQuery Downloads", "css", "wordpress");
    var encode = encodeURI(dontadd);    
    var url = domain + encode; 
    var posta = $(this).attr("href");
    if(posta!=dontadd){
    $(this).addClass("addedclass");
    }        
});

2 个答案:

答案 0 :(得分:1)

如果要检查数组是否包含字符串,则

!=不起作用。您可以使用indexOfhttp://jsfiddle.net/qbrN8/13/

$(".post-labels a").each(function(){
    var domain = "http://myblog.blogspot.com/search/label/";

    var dontadd = ["jQuery Downloads", "css", "wordpress"].map(function(v) {
        return domain + encodeURI(v);
    });
    // `dontadd` is an array of encoded, full URLs

    var posta = $(this).attr("href");

    // `!~` with `indexOf` can be used for "does not contain"
    if(!~dontadd.indexOf(posta)){
        $(this).addClass("addedclass");
    }        
});

答案 1 :(得分:1)

首先:不要在每个变量中声明你的“全局”变量......它会让你为每个元素声明这些变量。它真的没有优化

var dontadd = ["jQuery Downloads", "css", "wordpress"], domain = "http://myblog.blogspot.com/search/label/"; $(".post-labels a").each( ...

第二:你必须检查标签是否在dontadd中,而不是标签是dontadd =&gt; if (dontadd.indexOf(posta) !== -1)使用数组意味着您拥有一个元素集合,而不仅仅是一个元素集合。因此,您必须检查您所寻找的“是否”。 indexOf返回元素的索引(0到length-1),如果不存在则返回-1。

第三:你从未使用过数组并且正在使用jQuery?你这样做是错误的。 你必须回到0,阅读并了解 Javascript 基础,学习如何创建图书馆等等...当你能够制作像你正在使用的那样的东西时,你'我将能够学习如何使用jQuery。