2013-02-27 46 views
0

我試圖收集一組特定的<li>元素,我希望稍後在循環中使用它們。但是,我似乎沒有正確的語法:調試控制檯告訴我,我的對象是未定義的。有人能告訴我我做錯了什麼嗎?如何jQuery獲取元素並存儲在數組中供以後使用?

var all_help_triggers = []; 
$(".canned-triggers > li").each(function() { all_help_triggers.push($(this)) }); 
all_help_triggers[0].click(function(){alert('hi!');}) 
+0

顯示你的HTML ... – Mortalus 2013-02-27 03:32:47

+1

似乎工作在這裏罰款:: http://jsfiddle.net/BVrwu/ – 2013-02-27 03:36:47

回答

3

您可以簡單地這樣做:

// save selected jQuery objects into variable 
var all_help_triggers = $(".canned-triggers > li"); 

// get first element in jQuery object, and assign a click handler 
all_help_triggers.eq(0).click(function(){ 
    alert('hi!'); 
}); 

編輯(關閉額外的基於註釋):

要獲得索引,使用.index()

$('.canned-content > li').hide(); 

$('.canned-triggers > li').click(function() { 
    var i = $(this).index(); 
    $('.canned-content > li').eq(i).show(); 
}); 

http://jsfiddle.net/samliew/erp2J/11/

如果你想隱藏頁面加載列表,你應該在CSS中完成。相反的:

$('.canned-content > li').hide(); 

刪除該行並添加這個CSS來代替:當您使用的每個()的「本」價值是指「每個」元素進行迭代

.canned-content > li { display: none; } 
+0

.eq():完美!然而,現在我試圖在循環中應用它,讓每個觸發器在另一個列表中觸發其按時間順序排列的相似內容,如下所示:http://jsfiddle.net/foomarks/erp2J/8/有什麼建議嗎? – 2013-02-27 04:02:34

+0

查看最新的答案 – 2013-02-27 04:09:38

+0

太棒了!這是一個非常簡單的解決方案,謝謝! – 2013-02-27 04:13:44

1

。因此,而不是使用一個額外的數組,你應該嘗試類似的東西...

$(".canned-triggers > li").each(function() { 
    $(this).click(function({ 
     alert('hi!') 
    }); 
}); 

只注意到您的評論:

看到小提琴例如:http://jsfiddle.net/ScRqc/

<ul class="canned-triggers"> 
    <li data-element="#li1">heyo1</li> 
    <li data-element="#li2">heyo2</li> 
    <li data-element="#li3">heyo3</li> 
</ul> 

<ul class="canned-content"> 
    <li id="li1">I'm heyo content 1</li> 
    <li id="li1">I'm heyo content 2</li> 
    <li id="li2">I'm heyo content 3</li> 
</ul> 


$('.canned-content > li').hide(); 

$('.canned-triggers > li').click(function() { 
    var toggleElement = $(this).data("element"); 
    $(toggleElement).show(); 
}); 
+0

固定 - 謝謝! :)複製粘貼問題:) – Mortalus 2013-02-27 03:37:47

+0

這太棒了。不幸的是,我不知道如何在一個場景中應用這種情況,當我想要觸發器在另一個組中按時間順序進行觸發時,就像這樣:http://jsfiddle.net/foomarks/erp2J/8/這仍然是可能的只需要應用.each()? – 2013-02-27 04:04:20

-1

您應該檢查是否你的選擇確實返回任何東西

此外,一個jQuery集合是類似數組的,意味着你不需要將它明確地轉換爲數組......你可以通過for循環它,沒有任何問題。

但是,如果你還需要一個JavaScript數組,你可以用下面的代碼這樣做:

var all_help_triggers = $.makeArray($(".canned-triggers > li")); 

更多文檔上$.makeArray方法here

+0

不錯,我試圖幫助用戶,我沒有進一步的評論,得到一個downvote。非常好。 – gustavohenke 2013-02-27 03:59:37

相關問題