保持jQuerys .change()在页面加载时运行

Sco*_*ott 1 javascript jquery

我有一个包含多个选择列表的页面,当使用jQuery的.change()函数更改其中一个选择列表时,我会更改选择列表旁边的范围中的文本.页面加载时,每个范围内都有一些文本(每个范围的文本不同).问题是当页面加载时,.change()函数循环遍历所有选择列表,更改每个范围中的文本.在用户选择列表中的其他项目之前,我不希望更改范围中的文本.我不能只检查跨度中是否有文本,因为如果用户确实更改了所选项目,无论是否有任何文本都没关系,我只是不想替换文本时页面加载.那么,如何在页面加载时让.change()函数停止触发?代码:

JS/jQuery的

$(document).ready(function() {
  $("select").change(function () {
    var txt = $(this).val();
    $(this).next('span').text(txt);
  }).trigger('change');
});
Run Code Online (Sandbox Code Playgroud)

HTML(重复多次)

<select name="animal[]">
<option value="dog" selected="selected">dog</option>
<option value="cat">cat</option>
<option value="bird">bird</option>
<option value="snake">snake</option>
</select>
<span class="out">text that shouldn't be replaced until user changes selected item</span>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Nic*_*ver 5

您只需要删除此调用:

.trigger('change')
Run Code Online (Sandbox Code Playgroud)

它正在调用$("select").change(function () { ... })你刚刚绑定的处理程序.默认行为是等待change事件发生... a .trigger('change').change()(无参数)将模拟change事件,使该处理程序开始工作.