2013-12-16 49 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