Jquery UI を使用して 2 つのボタンを作成し、次のイベントを添付しました。
function testconfirm() {
alert( "testconfirm");
}
function testCancel() {
alert( "testCancel");
}
イベントが発生しないのは初めてです。その後は正常に動作します。
次の Fiddle に投稿されたコードの何が問題なのかを特定するのを手伝ってくれる人はいますか?
Jquery UI を使用して 2 つのボタンを作成し、次のイベントを添付しました。
function testconfirm() {
alert( "testconfirm");
}
function testCancel() {
alert( "testCancel");
}
イベントが発生しないのは初めてです。その後は正常に動作します。
次の Fiddle に投稿されたコードの何が問題なのかを特定するのを手伝ってくれる人はいますか?
常にクリックイベントをトリガーしますが、意図したとおりに実行していない可能性があります。まず、テスト機能として両方のボタンにイベントをバインドします。したがって、最初のクリックでテスト関数をそのハンドラーとして実行し、メッセージを警告する実際のハンドラーを再度アンバインドしてバインドします。したがって、最終的に2回目以降のクリックから、アラートを持つハンドラーが実行されました。
function test() {
//Binding during the first click
$('#btnconfirm').unbind('click').on("click", testconfirm);
$('#btnCancel').unbind('click').on("click", testCancel);
}
var buttonPane = $("#message1");
$.each(dialog_buttons, function (index, props) {
$(buttonPane).append('<span class="ui-button-text" id="btn' + props.id + '">' + props.text + '</span>');
//Binding for the first time
$('#btn' + props.id).button().unbind('click').on("click", test);
});
このバインディングの問題は、次の方法で簡単に解決できます。
ダイアログ ボタンの props を設定するときに、handler のプロパティも追加します。
var AlertTest = {
"message1": {
"buttons": [{
id: "confirm",
text: "Yes",
handler: testconfirm //add one more property for the handler
}, {
id: "Cancel",
text: "No",
handler: testCancel //add one more property for the handler
}]
}
}
ボタンを作成するときにイベントをバインドするだけです。
$('#btn' + props.id).button().on("click", props.handler);