jquery关联数组
我确信jquery相当简单,需要一些帮助吗 我有以下几个列表项的重复标记jquery关联数组,jquery,bytearray,Jquery,Bytearray,我确信jquery相当简单,需要一些帮助吗 我有以下几个列表项的重复标记 <li> <div class="answer"> <p><select class="dropdown"> ..options.. </select></p> </div> <div class="commentBox"> ..content.. </div> </li> 我得到一个错误b。应用不是一
<li>
<div class="answer">
<p><select class="dropdown">
..options..
</select></p>
</div>
<div class="commentBox">
..content..
</div>
</li>
我得到一个错误b。应用不是一个函数
在我看来,它应该如何工作——如果是第一个选择下拉列表,则显示/隐藏第一个commentBox div。如果是第二个下拉列表,则显示/隐藏第二个commentBox div。依此类推
我想我在尝试各种jquery技术时遇到了麻烦,所以我确信这里有几十种可能性。
谢谢你只给它一个参数,函数
或者,如果您:
第二个版本用于迭代任何类型的集合
你把两者结合起来了
编辑:我想我最好解释一下setStyle在OP的代码中,而不是当前问题的直接原因
我无法知道OP是否使用其他方法扩展了DOM元素。因此,我只能假设这样一个方法的位置是正确的。您的问题是,您正在向每个方法传递一个额外的第一个参数。 静态调用时,每个仅将集合作为第一个参数。 换言之:
$.each(dd, function() { ... });
或
请注意,您可以通过将代码更改为
$(this).closest('li').find('.commentBox').hide();
试一试
使用.eqn而不是[n]后者将生成DOM节点,而我的生成一个jQuery对象,您可以在该对象上调用css,正如您看到的,我从setStyle what is function切换到css
使用Slakks建议的增强功能,您最终会得到这段可读性更好的代码
$('.dropdown').each(function(n, ele){
var $ele = $(ele);
if ($ele.val() == "one")
$ele.closest('li').find('.commentBox').hide();
});
@抖动:错误;事实并非如此。试试看。写入变量a=$'a';a、 eacha,console.log进入Firebug。感谢所有的建议,回复非常快!你应该接受SLaks的回答,因为他解释了为什么你的答案。每个电话都是错误的,并提出了我刚才在第二部分中重复使用的很好的简化方法answer@jitter-我建议不要使用你根据SLaks的回答给出的版本。在没有测试的情况下无法确定,但我猜,对循环中的每个迭代进行单独的.closest和.find可能会降低效率。就效率而言,仍然可以做很多工作。e、 g.提供上下文而不是搜索整个页面+限制选择$'ID\u of_UL select.dropdown.@jitter-我同意。我只是想比较一下你的第一个例子和第二个,我倾向于第一个。但需要测试才能确定。总的来说,我最倾向于OP直接访问DOM元素的原始解决方案,但我会使用com[n].style.display='none';相反
$.each(dd, function() { ... });
dd.each(function() { ... });
$(this).closest('li').find('.commentBox').hide();
var dd = $('.dropdown'),
com = $('.commentBox');
dd.each(function(n, ele) {
if( $(ele).val() == 'one') {
com.eq(n).css('display', 'none');
}
});
$('.dropdown').each(function(n, ele){
var $ele = $(ele);
if ($ele.val() == "one")
$ele.closest('li').find('.commentBox').hide();
});