Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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.change()函数只能触发一次_Jquery_Html - Fatal编程技术网

jQuery.change()函数只能触发一次

jQuery.change()函数只能触发一次,jquery,html,Jquery,Html,在我的页面上有一个名为boxID的标签。它旁边是一个名为wholeThingBody的div,它通过jQuery隐藏 <select id='boxID'> <option value='option1'> option1</option> <option value='option2'> option2</option> </select> <div id='wholeThingBody'>

在我的页面上有一个名为boxID的标签。它旁边是一个名为wholeThingBody的div,它通过jQuery隐藏

<select id='boxID'>
  <option value='option1'> option1</option>
  <option value='option2'> option2</option> 
</select>

<div id='wholeThingBody'>
     Some content to permanently display once .change has been fired once
</div>
用于注册仅触发一次的处理程序,这也是因为您希望显示元素,而不是使用类似Use的方法

$boxID。一个“更改”,函数{ $this.next.slideDown300;//显示div wholeThingBody的内容 }; $wholeThingBody.hide; 选择1 选择2 某些内容将永久显示一次。更改已触发一次
只需使用slideDown而不是slideToggle

$("#boxID").change(function () { 
    $(this).next().slideDown(300);
});

有几种方法可以做到这一点:

使用向下滑动的最佳方式:

删除侦听器:

$("#boxID").on('change', function() {
    $(this).next().toggleSlide(300);
    $("#boxID").off('change');
});
$("#wholeThingBody").hide(); 
至于我,我会用CSS类来实现这一点

CSS:

JS:

顺便说一句,对于将来,如果您想更改DOM元素的ID,那么就这样做

this.id = "okna";
而不是

$(this).id = "okna";
因为id是DOM元素的属性,而不是jQuery属性

请尝试使用$.callbacksone、callbacks.fireWith

var callbacks=$.callbacksone; var fn=函数{ $this.next.slideToggle300;//显示div wholeThingBody的内容 }; callbacks.addfn; $boxID.changefunction{ callbacks.fireWiththis; }; $wholeThingBody.hide; 选择1 选择2 某些内容将永久显示一次。更改已触发一次
一个完整的答案。我接受了。
$("#boxID").on('change', function() {
    $(this).next().toggleSlide(300);
    $("#boxID").off('change');
});
$("#wholeThingBody").hide(); 
#wholeThingBody {
    display: none;
}

#wholeThingBody.active { 
    display: block;
}
$("#boxID").on('change', function() {
    $(this).next().addClass('active'); // It will add a class only once
});
this.id = "okna";
$(this).id = "okna";