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