1

我有这个工作正常的 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 脚本行为?

4

2 回答 2

4

试试这个

$('#selectFoods').prop('selectedIndex', t).change();

演示

使用selectedIndex不会触发更改事件。你必须自己触发它。

于 2012-06-15T07:03:42.217 回答
2

我认为您必须自己触发事件,因为我知道没有监听器可以跟踪每个选择框的 selectedIndex ,因此当 selectedIndex 更改时,js 引擎可以触发事件。也就是说,改变selectedIndex的是默认的change()行为,而不是相反。

于 2012-06-15T07:11:08.083 回答