0

特定のオプションが選択されたときにいくつかのことをしたいのですが、どうすればそれを定義できますか? 次に例を示します。

<select id="mySelect">
   <option>...</option>
   ...
   <option>...</option>
   <option id="myOption">I need exactly this option</option>
</select>

どうすればそれができますか?私はこのようにしました:

$('#city').change(function(){
 if($("#another_city", this).is(":selected")){
        alert('ok');
     }
});

どうすれば別の方法でそれを作ることができるかを見たいと思っています。

4

3 に答える 3

2

これを行う唯一の可能な方法は、ifステートメントを使用することです。<option>タグの実際のイベント ハンドラーはありません。

于 2013-02-17T23:50:06.360 に答える
2

これが機能する方法はいくつかありますが、クロス ブラウザーとの互換性はありません。

$('#myOption').on('click', function(event) {
   //write code here
   alert('clicked');
});

ここ では Firefox でのみ動作します ( jsFiddle )

  1. Firefox は、「onclick」、「onmousedown」、および「onmousemove」イベントをドロップダウン リストで起動できる唯一のブラウザです。

  2. ドロップダウンがリスト ボックスの形式である場合、上記のイベントはIE を除くほとんどのブラウザーでサポートされます。

  3. プラグインを使用するか、ポップアップ div をポップアップ メニューとして作成します。これを行うことで、ネイティブ DOM 要素に制限されるのではなく、必要な機能を持つことができます。

  4. それ以外の場合は if ステートメントを使用します

それに関するドキュメントは、このサイトで非常に広範です

于 2013-02-18T00:00:21.203 に答える
0

change イベントの後の値を確認するだけです。

$('#city').change(function (){
    if (this.value === "One City") {
        // do stuff
    } else if (this.value === "Another City") {
        // do other stuff
    }
});

せずにやってもif意味がありません。select要素の下で発生する特定レベルの実装依存の動作があり、ブラウザはこれに同意しません 。たとえば、Firefox はオプションでクリック イベントをトリガーしますが、Chrome はトリガーしません。

于 2013-02-17T23:59:38.910 に答える