我有一个我设置的变量selectedTagNames
:
var selectedTagNames = $(".js-tag-name:checked").map(function(){return $(this).val()});
selectedTagNames
=> ["song:age_suitability=11-13", "song:age_suitability=5-7"]
出现成为一个数组。我想将值加入到带有“||”的单个字符串中,但我不能:
var searchTerm = selectedTagNames.join('||')
=> VM7234:2 Uncaught TypeError: undefined is not a function
message: "undefined is not a function"
stack: (...)get stack: function () { [native code] }
set stack: function () { [native code] }__proto__: Error
我可以手动完成,而不是使用变量:
["song:age_suitability=11-13", "song:age_suitability=5-7"].join('||')
=> "song:age_suitability=11-13||song:age_suitability=5-7"
因此,该变量的值必须与我在第二个示例中使用的数组不同,即使它看起来是相同的。他们都只返回typeof()
的“对象”。
我正在使用jquery版本1.7.1。
任何人都可以告诉我 a)这里发生了什么? b)如何将所选复选框的值收集到一个数组中,这样我就可以看到它们有多少,并将它们连接在一起,避免出现问题?
答案 0 :(得分:1)
$(selector).map()
返回一个类似于数组的对象,类似于jQuery从选择器返回的内容。
您需要使用静态方法:
$.map($('.js-tag-name:checked'), function(el) {
return $(el).val();
});
答案 1 :(得分:1)
.map()
返回一个jQuery集合,而不是一个数组。您可以通过在结果上调用.get()
将其转换为数组。
var selectedTagNames = $(".js-tag-name:checked").map(function(){
return $(this).val()
}).get();