2013-12-16 29 views
0

我有一个包含对象(列表项)的数组(myElems)。 我想从这个数组中找出与ID匹配'foo'的元素。 “富”串当前存储在一个变种“targetItem” 最后,我要抢匹配元素的position.top基于ID从数组中检索对象

var targetItem = 'foo'; // value of this var is set dynamically 
$(myElems).grep(function(ele){ 
retun ele.id == menuItem; 
}); 
var loc = // [returned from array].position.top; 

...是的,我知道这是大杂烩......我不知道如何语法本

感谢

编辑: 创作myElems的

var myElems = []; 

    $('#menu').children('li').each(function() { 
     myElems.push($(this)); 
    }); 

HTML:

<ul id="menu"> 
    <li id="foo">FOO ITEM</li> 
    <li id="boo">BOO ITEM</li> 
</ul> 
+0

是您的myElems DOM引用数组吗?还澄清你的意思是由position.top。你的意思是CSS _top_属性?或者你的意思是数组集合中找到的元素的索引? – cbayram

+0

是CSS位置 – user3024007

回答

0

我能想到的手最好的办法是只迭代这个数组,并用grep

从那里
$.grep(myElems,function(value,id){ 
    return id == targetItem; 
}); 

让我知道这是否适用于你,否则我将修改我根据您的意见回答。这是我可以给你的代码给你的最好的。

0

在香草js。

el = myElems.filter(function (elem) { 
    return elem["id"] == "foo"; 
}) 

这会得到一个匹配“foo”的元素数组。然后,你可以检查,如果你有一些有:

if(el.length > 0) el = el[0] 
1

JS

var ele = $('#foo').attr('id') 
var myElems = []; 

$('#menu').children('li').each(function() { 
    myElems.push($(this).attr('id')); 
}); 

var targetItem = 'foo'; // value of this var is set dynamically 
var newelement = $.grep(myElems, function(ele, i){ 
         return ele == targetItem ; 
        //console.log("This is the position of matched item - ", + i); 
        }); 

小提琴:http://jsfiddle.net/Xt6Wh/2/

检查ele.id越来越所需的值。在小提琴中,我从div中获得价值 - 只是为了表明逻辑的工作原理。我不知道你从哪里得到ele.id。因此我采取了这个假设。

+0

如何使用返回的值?关闭它在一个var例如在其他地方使用? – user3024007

+0

'var newelement = function' ...检查编辑答案 – Ani

+0

由于某种原因它会在$(myElem).grep ...上抛出错误,所以我不得不使用'$ .grep(myElem,function ...' (对象没有方法grep)。仍然,'newelement'返回'[]',空数组吗? – user3024007

0
// To get the correct element you can just stick to CSS id selector: 
var target = $('#menu').children('li#' + targetItem); 
// to get the CSS top value you can do 
var top = target.css("top"); 

当然,你可以检查target.length如果在没有目标元素存在的情况下。

http://jsfiddle.net/jeVSJ/

+0

我必须达到阵列,因为这是动态创建的,并在给定项目被推入数组 – user3024007

+0

@ user3024007时根据您的代代码保存位置值myElems,这会产生相同的结果。无论您如何获取它,您的CSS顶级属性值都是通过DOM引用引用的。也许你可以详细说明。 – cbayram