以编程方式(而不是用户)更改选择选项时,jQuery脚本不起作用

时间:2012-06-15 07:00:54

标签: javascript jquery triggers

我有这个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脚本行为?

2 个答案:

答案 0 :(得分:4)

试试这个

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

<强> DEMO

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

答案 1 :(得分:2)

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