jQuery 脚本在以编程方式(不是由用户)更改选择选项时不起作用
jQuery script doesn't act when changing the select option programatically (not by the user)
我有这个jQuery脚本,工作正常:
$("select").change(function () {
var finalPrice = 0;
$("select option:selected").each(function () {
if ($.cookie('descuentoGen') != null){
finalPrice = Math.floor(precios[$(this).index()]*$.cookie('descuentoGen'));
} else{
finalPrice = precios[$(this).index()];
}
});
$("#precioFinal").text(finalPrice);
})
.trigger('change');
如您所见,当用户在select
中选择另一个选项时,它只是执行一些操作。
现在,在不同的脚本中,我称之为:
document.getElementById('selectFoods').selectedIndex = t;
这应该工作,因为它实际上更改了选定的选项,问题是,为什么我以这种方式更改所选选项,初始 jQuery 脚本中的操作不会执行。
有没有办法解决这个问题,或者我必须在另一个脚本中复制 jQuery 脚本行为?
试试这个
$('#selectFoods').prop('selectedIndex', t).change();
演示
使用 selectedIndex
不会触发更改事件。你必须自己触发它。
我认为您必须自己触发事件,因为我可以知道没有一个侦听器可以跟踪每个选择框的 selectedIndex,因此当 selectedIndex 更改时,js 引擎可以触发该事件。 也就是说,是默认的 change() 行为改变了 selectedIndex,但不是相反的。
相关文章:
- d3基于用户选择动态更新节点
- 获取用户选择的不带时区的日期
- 如何使用javascript localStorage保存用户选择并在不同的html页面中显示
- jQuery根据用户选择启用/禁用asp.net控件
- 将用户选择添加到数组中
- 将用户选择的数据临时存储在我的阵列中
- 如果用户选择离开网页,如何删除记录
- 根据用户选择选择页面
- 如何根据用户选择动态更改多个复选框的编号
- 谷歌地图 - 用户选择不允许位置
- 根据用户选择获取 JSON 密钥
- 根据用户选择的输入编写 html 文本
- Hangman游戏将用户选择的字母与单词中的字母进行比较以进行猜测
- Javascript确认,捕获用户选择
- 获取用户选择的选项的值
- NodeJS+JS:根据当前用户选择生成动态链接
- 使用用户选择动态更新页面
- html5文件api,将用户选择的目录存储在sessionStorage中
- 如何根据用户选择顺序重新排序多选的值
- PHP根据用户选择的项目以模式加载数据