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が変更されたときにjsエンジンがイベントをトリガーできるように、すべての選択ボックスのselectedIndexを追跡するリスナーがないことを知っているので、自分でイベントをトリガーする必要があると思います。つまり、selectedIndex を変更するのはデフォルトのchange()の動作ですが、その逆ではありません。

于 2012-06-15T07:11:08.083 に答える