对象没有方法eq或find

时间:2013-02-18 17:48:16

标签: javascript jquery jquery-ui-sortable

我有一些在文档就绪时声明可排序的元素。稍后在函数中我使用toArray将它们放入数组中。我想要做的是遍历这个数组并获得那些我正在寻找的具有特定元素的数组。我循环遍历数组并使用.find,但它说元素myarray [index]没有找到方法,所以我尝试了myarray.eq(index).find然后它说它们没有方法eq。任何帮助都将不胜感激。我的代码如下。

  var imageBlocks = $(".imageBlocks").sortable("toArray");
  images = Array();

  for(i = 0; i < imageBlocks.length ; i++)
  {
    image = imageBlocks.eq(i).find(".post_image");
    if(image.length > 0){
      images.push(image); 
    }

  }

4 个答案:

答案 0 :(得分:0)

试试这个:

image = imageBlocks[i].find(".post_image");

并更正$imageBlocks / imageBlocks

答案 1 :(得分:0)

imageBlocks === $ imageBlocks

this should work:

var imageBlocks = $(".imageBlocks").sortable("toArray");
  images = Array();

  for(i = 0; i < imageBlocks.length ; i++)
  {
    image = imageBlocks.eq(i).find(".post_image");
    if(image.length > 0){
      images.push(image); 
    }

  }

答案 2 :(得分:0)

看起来toArrray()只返回一个对应于对象id的字符串数组,而不是我拥有的对象本身的数组。我通过将代码更改为:

来解决此问题
  var imageBlocks = $(".imageBlocks").sortable("toArray");
  images = Array();

  for(i = 0; i < imageBlocks.length ; i++)
  {
    imageID = $("#"+imageBlocks[i]);
    image = imageID.find(".post_image");

    if(image.length > 0){
      images.push(image);
    }    
  }

答案 3 :(得分:0)

看看你的范围有限,我无法理解为什么这不起作用:

var myimages = imageBlocks.filter(function(){
     return $(this).find('.post_Image').length >0;
});
var myArray = myimages.toArray();
编辑:链接:

var myArray = imageBlocks.filter(function(){
     return $(this).find('.post_Image').length > 0;
}).toArray();

我在这里遗漏了什么吗?

编辑:要清楚,请用你的榜样;我上面的代码在实际使用中扩展了:

$(".imageBlocks").filter(function(){
     return $(this).find('.post_Image').length > 0;
}).toArray();

我把上面的一个小提琴和一些标记放在一起,这样你就可以看到它完全被称为:http://jsfiddle.net/kDNuc/