わからないのですが、なぜこの方法の .focus コールバックが機能しないのですか?
$('a.focus').click(function(){
$('form input:first').focus(function(){
console.log('done focus');
});
});
ライブデモ: http://jsfiddle.net/SHxbj/
私がここで間違っていることはありますか?
わからないのですが、なぜこの方法の .focus コールバックが機能しないのですか?
$('a.focus').click(function(){
$('form input:first').focus(function(){
console.log('done focus');
});
});
ライブデモ: http://jsfiddle.net/SHxbj/
私がここで間違っていることはありますか?
このようにしないのはなぜですか:
$('a.focus').click(function() {
$('form input:first').focus();
});
$('form input:first').focus(function() {
console.log('focused');
});
最初のチャンクはリンクのクリックをバインドしてカーソルを入力フィールドにフォーカスし、2 番目のチャンクはフォーカス イベントを入力フィールドにバインドし、メッセージをコンソールに送信します。
$('form input:first').focus(function(){
console.log('done focus');
});
そのコード ブロックは、リンクがクリックされたときにフォーカス コールバックを実行するのではなく、最初のフォーム入力にイベントをバインドしています。あなたのコードは期待どおりに機能しますが、おそらくあなたが考えている方法とは異なります。リンクをクリックしてから、最初の入力をクリックしてみてください。
あなたはおそらくこれを望んでいます:
$('form input:first').focus();
console.log('done focus');
コードはコールバックをイベントにバインドしますが、focus
実際には要素にフォーカスしません。それをコールバックとして保持し、手動で要素にフォーカスするか、フォーカスの後に単純に起動することができます:
編集済み; リピートバインディングを指摘してくれた@GNi33に感謝します!
var $input = $('form input:first');
$input.focus(function(){
console.log('done focus');
});
$('a.focus').click(function(){
$input.focus();
});
$('a.focus').click(function(){
$('form input:first').focus(function(){
console.log('done focus');
}).focus();
});