我有一个包含多个选择列表的页面,当使用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)
谢谢你的帮助!
您只需要删除此调用:
.trigger('change')
Run Code Online (Sandbox Code Playgroud)
它正在调用$("select").change(function () { ... })你刚刚绑定的处理程序.默认行为是等待change事件发生... a .trigger('change')或.change()(无参数)将模拟change事件,使该处理程序开始工作.
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |