"更改“;添加要选择的选项时正在激发
"Change" is being fired when adding options to select
我有两个选择,当第一个改变时,我会重新创建第二个,如下所示:
_selectSubcategory : function (parent_id) {
this.id('cat_select').find('option').remove().end();
var option_list = [];
option_list.push('<option selected value="0"></option>');
$.each(this._data.categories, function (k, cat) {
if (cat.parent_id == parent_id) {
option_list.push('<option value="' + cat.cat_id + '">' + cat.cat_name + '</option>');
}
}.bind(this));
this.id('cat_select').append(option_list.join(''n'));
}
我有一个关于这个选择的"change"事件的事件监听器。
问题是每次调用_selectSubcategory
时都会触发此事件。我该如何修复它?
正如注释中所指出的,除非删除当前所选的元素,否则它应该可以正常工作。
您可以在重新填充列表时添加一个条件来豁免option[selected]
,也可以在操作整个<select>
时期望它激发一个更改事件。
您可以使用.one
和.stopPropagation
来忽略通过重新加载列表而触发的更改。类似于:
var $select = $('#options');
$('#add').click(function(e){
var val = Math.floor(Math.random() * 1000),
opt = 'option ' + val;
$('<option>',{'value':'val','html':opt}).appendTo($select);
});
$('#reset').click(function(e){
$select.one(function(e){
e.stopPropagation();
});
var newopts = {
'0': 'Please select one...',
'1': 'Option 1',
'2': 'Option 2',
'3': 'Option 3'
};
var $lastOpt = $select.find('option').last(),
newValue;
// add the new options first
$.each(newopts, function(v,k){
if (!newValue) newValue = v;
$('<option>',{'value':v,'html':k}).appendTo($select);
});
// change index once (.one will catch and suppress the change event)
$select.val(newValue);
// remove previous elements
$lastOpt.add($lastOpt.prevAll()).remove();
});
$('#options').change(function(e){
$('#debug').append('Change detected.'n');
});
更新示例:http://jsfiddle.net/pUyZ7/1/
相关文章:
- 使用此选项选择父类内部的类
- 更新:仅根据单选按钮和所选选项选择特定项目
- 使用PHP通过HTML表单选项选择器过滤MYSQL结果
- ng-单击在IE中不起作用的选项选择Angularjs
- 从选项选择中删除值
- On为<选项>选择等效项
- 用户界面先前选择的选项选择更改
- 使用ng重复或ng选项和删除空白选项选择长方体角度
- 在HTML5、CSS、JavaScript中添加选项选择器,类似于移动应用程序中的选项设置
- 输入:选中,选项:选择选择器
- 根据使用angularjs从下拉菜单中选择的选项选择适当的复选框
- 如何根据 html 中的选项/选择重定向用户(单击按钮后)
- 使用ng选项选择中的ng选项进行过滤器下拉列表
- 如何设置选项选择的值
- 如何搜索长下拉选项/选择列表
- jQuery - 根据下拉选项选择列出结果
- 从选项选择单击时打开 2 个 URL
- 在 Angular JS 中为 ng 选项选择默认值
- 下拉选项选择的操作
- 通过单击单选按钮清除所有选项选择条目