Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery关联数组_Jquery_Bytearray - Fatal编程技术网

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。应用不是一

我确信jquery相当简单,需要一些帮助吗

我有以下几个列表项的重复标记

<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();
});