Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript 将项目数组传递给jquery函数_Javascript_Jquery - Fatal编程技术网

Javascript 将项目数组传递给jquery函数

Javascript 将项目数组传递给jquery函数,javascript,jquery,Javascript,Jquery,我不完全清楚,当试图将一个项目数组传递给函数时,为什么这不起作用。记住for循环的原因是,我可以将子ctrl的状态更改为“+”或“-” 未捕获类型错误:项[i]。removeClass不是函数 如果改用.toggleClass(),则可以修剪代码(并使其更具可读性): function SetClosed(state, $items){ $items = $items || $(this).parent().children(".section-content"); $items

我不完全清楚,当试图将一个项目数组传递给函数时,为什么这不起作用。记住for循环的原因是,我可以将子ctrl的状态更改为“+”或“-”

未捕获类型错误:项[i]。removeClass不是函数

如果改用
.toggleClass()
,则可以修剪代码(并使其更具可读性):

function SetClosed(state, $items){
    $items = $items || $(this).parent().children(".section-content");
    $items.toggleClass('isClosed', state);
}
引述:

.toggleClass()的第二个版本将第二个参数用于 确定是否应添加或删除类。如果这 参数的值为true,则添加该类;如果为假,则为 类被删除

实质上,该声明:

$( "#foo" ).toggleClass( className, addOrRemove );
相当于:

if ( addOrRemove ) {
    $( "#foo" ).addClass( className );
} else {
    $( "#foo" ).removeClass( className );
}
此方法(与许多“处理”方法一样)处理
$items
集合中的所有元素,因此无需使用
手动迭代它们。如果您确实需要一些单独的操作,可以在链上完成:

function SetClosed(state, $items){
    $items = $items || $(this).parent().children(".section-content");
    $items.toggleClass('isClosed', state)
          .children('.ctrl').html(state ? '+' : '-');
}

。。。
html()的setter表单设置匹配元素集中每个元素的html内容。

您可以使用


听起来
item
是一个domeElement,而不是jQuery对象。尝试
$(item.removeClass('isClosed')为什么不简单
items.addClass(“isClosed”)
项。移除类(“isClosed”)?最好的解决方案是
items.toggleClass(“isClosed”,state)for循环的原因是,我可以遍历每个子级并更改其文本。。var ctrl=item.children(“.ctrl”);html('+');或ctrl.html('-')@JokerMartini,您仍然可以使用
items.children(“.ctrl”).html(状态?“+”:“-”)实现它for循环的原因是,我可以遍历每个子级并更改其文本。。var ctrl=item.children(“.ctrl”);html('+');或ctrl.html('-');那你为什么不提这个问题?更新答案。
function SetClosed(state, $items){
    $items = $items || $(this).parent().children(".section-content");
    $items.toggleClass('isClosed', state)
          .children('.ctrl').html(state ? '+' : '-');
}
function SetClosed(state, items){
    if (typeof items === "undefined" || items === null) { 
        items = $(this).parent().children( ".section-content" ); 
    }

    //toggle the class
    items.toggleClass("isClosed", state); 

   //Change text of children
    items.children(".ctrl").html(state ? '+' : '-');
}