3

新しいjquery on()メソッドにコードを更新しようとしています。私はテーブルと選択ボックスを持っています。選択したボックスにテーブルヘッダーセルごとに1つのオプションを設定します。これは正常に動作します。iOSで新しいjquery( 'change')が起動しないのはなぜですか?それはAndroid上で動作しますか?

次に、選択したオプションに応じてヘッダーセルを切り替える必要があります。これはデスクトップとAndroidでは動作しますが、iPadでは動作しません。

これは私がやっているものです:

$(document).on('change',$('select#toggle'), function(...) 

が、これだけで:私が最初にそうように文書化するために、次のコードをバインドしようとしました

$('table th').each(function(i) { 

    // add option to select box for each table column 
    var toggle = $('<option value="'+id+'">'+th.text()+'</option>'); 
    $('select#toggle').append(toggle); }  

    // set up options 
    $('select#toggle').one("updateCheck", function(){  
    console.log("th-setup");  
    // if condition, then select, otherwise don't select 
    }).trigger("updateCheck"); 

    }); 


    // listen for select changes 
    $('select#toggle').on('change', function() { 
    console.log("change detected"); 
    }) 

HTML

<select id="toggle"></select> 

<table class="sample"> 
    <thead> 
    <tr> 
    <th>one</th> 
    <th>two</th> 
    <th>three</th> 
    <th>four</th> 
    </tr> 
    </thead> 
</table>  

をページが表示される前にiPadをクラッシュさせます。

私は何か間違っているのか、オプションを選択してもiPadとAndroidの両方で起動イベントが起きないのですか?

ヒントありがとうございます!

+0

これをブラウザでデバッグしましたか? –

+0

はい。それはFirefoxとChromeで動作し、Androidの携帯電話でも動作します。だからコードは正しいと思います – frequent

+0

あなたのコードは "on"ではなく、 "one"と言います。 – Sliq

答えて

7

それは次のようになります。

$('body').on('change', '#toggle', function() { ... }); 

最初の引数は、イベント名のリストです。 2番目はセレクタ文字列です(jQueryオブジェクトではありません)。 3番目はハンドラ関数です。

ノードタイプのセレクタの識別子参照を修飾する必要はありません。

+0

ok。ありがとう。 $( 'body')を$(document)の代わりに使うと、私のipadはもはやクラッシュしません。しかし、私はオプションを選択/選択解除するとchangeイベントは発生しません – frequent

+0

これはJQMではJquery on()ではないと思うので、セレクタに感謝し、チェックを受け取ります。 – frequent

+0

OK。私はそれを試すのに便利なiOSデバイスを持っていません:-) – Pointy

関連する問題