我有一个带有对象(列表项)的数组(myElems)。
我想从这个数组中找出一个ID
匹配'foo'的元素。
'foo'字符串当前存储在var'targetItem'中
最后,我需要抓住匹配元素的position.top
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 :(得分: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
。因此我接受了这个假设。
答案 1 :(得分:0)
我能想到的最好的方法是迭代数组并使用grep从那里开始
$.grep(myElems,function(value,id){
return id == targetItem;
});
如果这对您有用,请告诉我,否则我会根据您的评论编辑我的答案。鉴于你的代码,这是我能给你的最好的。
答案 2 :(得分:0)
在香草js。
el = myElems.filter(function (elem) {
return elem["id"] == "foo";
})
这将为您提供与“foo”匹配的元素数组。然后你可以检查一下是否有东西:
if(el.length > 0) el = el[0]
答案 3 :(得分: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 。