1

select の変更を聞くのは簡単です。

var redirect = function() {
    return window.location = $(this).val();
};

$('body').on('change', '#nav-select', redirect);

しかし、すでに選択されているオプションの選択をキャッチするのはどうchangeですか (イベントはありません)。

試した:

$('body').on('click', '#nav-select option', redirect);

動作しません...

編集:明確にするために:

デフォルトで選択されたオプションで選択していますfoo。私はこれをキャッチしたい:

  1. ユーザーが選択をクリック
  2. すでに選択されているオプションを選択しますfoo(変更イベントなし)
4

3 に答える 3

1

だから私はあなたの質問を次のように解釈しました:

「オプションがクリックされたが、select要素の値が変更されなかった場合にコードを実行するにはどうすればよいですか?」

私の解決策は、selectがロードするオプションの初期値を保存することでした。次に、回転ロックを選択要素に取り付けます。次に、回転するロックによって制御されるクリックイベントをアタッチします。次に、最初にロードされたオプションをクリックしたかどうかを確認します。結果は次のとおりです。

作業デモ: http: //jsfiddle.net/NS4qr/3/

html

<select id="s1">
  <option value="1">1</option>
  <option value="3">2</option>
  <option value="3">3</option>
</select>

js

$(function(){
    (function(){
        var loadedOption = $("#s1 option:selected").val();
        var isOpen = false;

        $("#s1").blur(function(){
            isOpen = false;
        });

        $("#s1").click(function(){
            isOpen = !isOpen;
            if(isOpen)return;
            if(this.value == loadedOption){
             //window.location = $(this).val();
             alert($(this).val());
            }
        });
    })();
});
于 2013-02-21T20:57:33.013 に答える
0

jQueryでオプション要素に「クリック」ハンドラーを指定できます。また、jQueryを使用して、オプション要素で「クリック」イベントをトリガーできます。これにより、「クリック」ハンドラーが呼び出されます。

ただし、オプション要素には「クリック」イベントがないため、実際に(マウスで)クリックしてもクリックイベントは作成されません。選択されていないオプションをクリックした場合にのみ、select要素に「change」イベントが作成されます。

例:

<select id="testSelect">
    <option value="1">1</option>
    <option value="2" selected="selected">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<script type="text/javascript">
    $("#testSelect option").click(function (event) {
        console.log("option clicked");
    });

    $("#testSelect option[value='2']").click(); // console outputs "option clicked"
</script>
于 2013-02-21T20:56:32.180 に答える
-1

「選択」と「クリック」を一緒に使ってみてください。何かのようなもの

$('body').on('change', '#nav-select', redirect);

$('body').on('click', '#nav-select option', redirect);
于 2013-02-21T20:31:11.657 に答える