如何jQuery获取元素并存储在数组*以后使用?
我试图收集一组特定的<li>
元素,我希望稍后在循环中使用它们。但是,我似乎没有正确的语法:调试控制台告诉我,我的对象是未定义的。有人能告诉我我做错了什么吗?如何jQuery获取元素并存储在数组*以后使用?
var all_help_triggers = [];
$(".canned-triggers > li").each(function() { all_help_triggers.push($(this)) });
all_help_triggers[0].click(function(){alert('hi!');})
您可以简单地这样做:
// 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; }
.eq():完美!然而,现在我试图在循环中应用它,让每个触发器在另一个列表中触发其按时间顺序排列的相似内容,如下所示:http://jsfiddle.net/foomarks/erp2J/8/有什么建议吗? – 2013-02-27 04:02:34
查看最新的答案 – 2013-02-27 04:09:38
太棒了!这是一个非常简单的解决方案,谢谢! – 2013-02-27 04:13:44
。因此,而不是使用一个额外的数组,你应该尝试类似的东西...
$(".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();
});
固定 - 谢谢! :)复制粘贴问题:) – Mortalus 2013-02-27 03:37:47
这太棒了。不幸的是,我不知道如何在一个场景中应用这种情况,当我想要触发器在另一个组中按时间顺序进行触发时,就像这样:http://jsfiddle.net/foomarks/erp2J/8/这仍然是可能的只需要应用.each()? – 2013-02-27 04:04:20
您应该检查是否你的选择确实返回任何东西
此外,一个jQuery集合是类似数组的,意味着你不需要将它明确地转换为数组......你可以通过for
循环它,没有任何问题。
但是,如果你还需要一个JavaScript数组,你可以用下面的代码这样做:
var all_help_triggers = $.makeArray($(".canned-triggers > li"));
更多文档上$.makeArray
方法here
不错,我试图帮助用户,我没有进一步的评论,得到一个downvote。非常好。 – gustavohenke 2013-02-27 03:59:37
显示你的HTML ... – Mortalus 2013-02-27 03:32:47
似乎工作在这里罚款:: http://jsfiddle.net/BVrwu/ – 2013-02-27 03:36:47