仅在数组中不存在项目时附加

时间:2013-12-17 07:46:11

标签: javascript jquery

我有3个选择框, 一个用于国家,另一个用于城市,另一个用于城市半径。

我希望在发送并保存db中的所有数据之前,用户选择在div中显示的内容。

我正在尝试做这项工作,但我不知道为什么我会有奇怪的结果。 它什么也没做!但是如果我删除“!”它对第一个有用,但后来又重复了。 我不明白我做错了什么。 这是代码:

var citySet = new Array;
function appendCity(){                  

    if(!$.inArray($("#businessCityTarget option:selected").text(),citySet)){                            

        $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
        citySet.push($("#businessCityTarget option:selected").text());  

    }

}

任何光线都会肆无忌惮

3 个答案:

答案 0 :(得分:0)

尝试:

if(citySet.indexOf($("#businessCityTarget option:selected").text()) < 0){
    $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
    citySet.push($("#businessCityTarget option:selected").text());
}

答案 1 :(得分:0)

你可以试试这个:

var citySet = new Array;
function appendCity(){                  

        if($.inArray($("#businessCityTarget option:selected").text(),citySet)===-1){                            

            $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
            citySet.push($("#businessCityTarget option:selected").text());  

        }

    }

希望这会有所帮助..

答案 2 :(得分:0)

您应该检查=== -1< 0

var citySet = new Array;

function appendCity() {
    if ($.inArray($("#businessCityTarget option:selected").text(), citySet) === -1) {
        $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>");
        citySet.push($("#businessCityTarget option:selected").text());
    }
}

来自docs

  

$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .inArray()返回0.