Javascript Split Function和Jquery不能一起工作

时间:2013-04-05 12:28:10

标签: javascript jquery

需要解析URL的Get变量。 我创建了一个document.location的jQuery对象,然后使用attr函数获取search属性来获取所有变量。但是当我在它上面使用split函数并且之后使用each()时,它会给出错误,指出对象没有每个方法。

TypeError: Object [object Array] has no method 'each'  

代码是:

 $(document.location).attr('search').split('&').each()

我还尝试在第一个函数中使用search属性,但它不允许它,即$(document.location.search)给出错误。

我还检查了split函数返回的数据类型,控制台说它是一个对象,我也很困惑它应该是一个数组。

P.S:以上所有代码都在jQuery的document.ready函数中

4 个答案:

答案 0 :(得分:7)

document.location对象创建jQuery对象毫无意义,因为它不是DOM元素。

从对象获取search属性,并在循环数组时使用$.each方法intead .each,而不是元素:

$.each(document.location.search.split('&'), function(){
  ...
});

答案 1 :(得分:5)

试试这个:

$.each($(document.location).attr('search').split('&'), function (index, value) {
    alert(index + ': ' + value);
});

jQuery .each()方法用于迭代jQuery对象,为每个匹配的元素执行一个函数。

但你从$(document.location).attr('search').split('&')获得的是一个JavaScript数组,显然没有'each'方法:这就是你得到错误的原因。

要在jQuery中循环遍历数组,您需要使用上面的$.each()方法。

答案 2 :(得分:0)

据我所知,JS-arrays没有each()函数。

尝试

var search_arr = $(document.location).attr('search').split('&');
for (var s in search_arr) {
    console.log(search_arr[s];
}

代替。

答案 3 :(得分:-1)

jQuery的each()函数本身就是直接从jQuery调用的; javascript数组没有将它作为函数,因为它不是以这种方式构建的。

我认为你正在寻找这个:

$.each($(document.location).attr('search').split('&'), function (index, value) {
    // stuff
});