2016-10-20 7 views
0

私はこれを動作させましたが、停止しました。奇妙なことは、 'mouseup'は動作しますが、 'keyup'は動作しないということです。キーアップが発砲していません

$(ドキュメント).ready(関数(){

$('#chordprodiv').on('keyup mouseup', 'textarea', function() { 
    chordpro_toCHORDSHEET(); 
}); 

})。

コメントの後に2つの修正があります。 jqueryを更新して関数を.onに変更し、イベントの書式を修正して同じ文字列にするようにしました。コードはすでにdocument.readyに入っていましたが、わかりやすくするために追加しました。

私は以来、親divをターゲットにし、別の提案に従って 'textarea'セレクタを特定しました。

はまたここにHTML

<textarea id="chordpro" name="chordpro"></textarea> 
+0

'.live'はとても古いです - どのバージョンのjQueryを使用していますか? – tymeJV

+0

投稿する[mcve] please – j08691

+0

私は1.8.3を使用しています。私はソースをチェックします。 – user2332467

答えて

0

.liveは

...あなたはまた、あなたのイベントが1つの文字列に一緒にする必要があります

.on使用する必要があり、jQueryの新しいバージョンでは廃止されています

$('#chordpro').on('keyup mouseup', function() { 
    chordpro_toCHORDSHEET(); 
}); 

イベントハンドラは、次のような形式で呼び出される必要があります。 $(ドキュメント).on(イベント、セレクタ、データ、ハンドラ);

+0

さて、イベントハンドラを整理してください。 – user2332467

+0

$(ドキュメント).ready(関数(){ $( '#のchordpro')( 'keyUpイベントのmouseup'、機能(){ chordpro_toCHORDSHEET()に;。 }); – user2332467

0

問題は、イベントハンドラの設定方法にあります。 jQueryの.on()を使用している。このオーバーロードがあります。

.on(イベント[セレクタ] [データ]、ハンドラー)

けど(http://api.jquery.com/on/で発見)のドキュメントから:

セレクタが提供される場合、イベントハンドラは委任されたと呼ばれます。バインドされた要素でイベントが直接発生したときにハンドラが呼び出されるのではなく、セレクタに一致する子孫(内部要素)に対してのみハンドラが呼び出されます。 jQueryはイベントをイベントターゲットからハンドラがアタッチされている要素(つまり最も内側の要素から最も外側の要素)までバブリングし、セレクタに一致するそのパスに沿った任意の要素のハンドラを実行します。

意味は2つあります。

<div id="chordpro-div"> 
    <textarea id="chordpro" name="chordpro"></textarea> 
</div> 

1.使用は.on

$('#chordpro').on('keyup mouseup', function() { 
... 

または

の他の過負荷は、親要素

HTMLにイベントハンドラを置きます

Javascript:

$('#chordpro-div').on('keyup mouseup', 'textarea', function() { 
... 
+0

私はあなたのように親のdivをターゲットにしかし、それは問題を解決しませんでした。私はダイアログページにコードを追加し、それがページにあるときに起動しますが、親ページにロードされているjavascriptを認識しません。 – user2332467

+0

あなたの目標とする親divの問題を確認してください。ここにはコードページがあります:http://codepen.io/jolyeons/pen/kkzrqA。また、ダイアログページ/親ページの意味を理解していないかもしれません。あなたのプロジェクトは別の解決策を必要としています。 できればこれを手に入れて、もっと助けようとしてうれしいです – jolyeons

関連する問題