5 に答える
you can use a Boolean value to determine if the event is triggered for the first time. For example, your code can be something like this...
var first_time_select = true;
$('.update-title')
.change(function () {
if (first_time_select) {
first_time_select = false;
} else {
var title = $('option:selected', this).prop('title');
$("#modal_Title").val(title);
}
});
Your code is fully correct,except the syntax error. remove the syntax error
working demo
$('.update-title')
.change(function () {
var title = $('option:selected', this).prop('title');
$("#modal_Title").val(title);//you are missing quotes
});
そうではありませんが、プログラムで選択ボックスを変更すると、いつでも選択ボックスにデータを割り当てることができます。次に、変更時に設定されているかどうかを確認します。
$('#mybutton').on('click', function() {
$('.update-title').data('dont-change', 1);
// repopulate the dropdown here...
});
$('.update-title')
.change(function () {
if (!$(this).data('dont-change')) {
var title = $('option:selected', this).prop('title');
$("#modal_Title").val(title);//you are missing quotes
} else {
$(this).removeData('dont-change');
}
});
select にデータを入力すると、select の change イベントがトリガーされる理由が正確にはわかりません (Knockout でこのようなことが起こっていることに気付きました)。ただし、トリガーされるのを避けたい場合は、要素を変更するときに.off()
( link.on(callback)
) を要素に使用してから、再度アクティブにしないでください。(インライン関数ではなく、名前付き関数でこれを行うことをお勧めします。)
これは不自然な例です: http://jsfiddle.net/b2x2T/11/
その例では、イベントをトリガーしないため、実際に on/off を使用する必要はないことに注意してください。ただしchange
、アイデアは理解できると思います。
編集:好奇心から、いつ、どのように選択リストにデータを入力していますか?
このchange
イベントは、要素がフォーカスを取得し、値が変更され、要素がフォーカスを失ったときにのみ、ブラウザーによってトリガーされます。要素が最初に入力されたときは発生しません。また、最初に入力change
されたときにイベントがトリガーされることに個人的に遭遇したことはありません<select>
。
あなたが説明しているのは標準的な動作ではないため、その要素の変更イベントハンドラーをプログラムでトリガーしているコードがどこかにあるようです。