0

私は、ユーザーが要素のオプションを(目立たないように)選択したときにコードを単純に起動したいRailsアプリを構築しています。これを行うための最もサポートされている方法は、要素を直接changeイベントにアタッチすることです。

$('#country_selection').change(function() { alert('it works'); });

しかし、私にとっては、これは機能していません。コンソールに入れると問題なく動作します。しかし、それを私のビューのjsファイルに入れると、機能しません。alert('in the js file');単純なものを挿入すると問題なく返されるため、jsファイルがロードされていることはわかっています。もう1つの奇妙な部分は、ライブメソッドの使用が機能することです。

$('#country_selection').live('change', function() { alert('hello'); });

しかし、私はこれをやりたくありません。それはサポートされているほどではありません。私が試した他の機能しないオプションは、「デリゲート」メソッドです。

$('#country_selection').delegate('change', function() { alert('hello'); });

変更機能が機能しないのはなぜですか?

4

1 に答える 1

2

次のような選択要素がある場合

<select id="my-select-box">
  <option value="1">First Value</option>
  <option value="2">Second Value</option>
</select>

次に、次の Jquery コードが機能するはずです

$('#my-select-box').change(function() {
  alert("hey, i got changed");
 });

JQuery がコードをセレクターにバインドする前に、DOM をロードすることが不可欠です。これを行うには、コードが無名関数内にあることを確認してください。

jQuery(function(){

  $('#my-select-box').change(function() {
    alert("hey, i got changed");
   });

});

これにより、JQuery が実行されてバインドが試行される前に、DOM が確実にロードされます。そうしないと、要素が読み込まれる前に JavaScript が実行され、正しく実行されません。

于 2012-08-14T13:18:48.243 に答える