リンクがクリックされるとjqueryプラグインが表示され、リンクが行われる前に確認ダイアログが表示されます。jqueryは既定で表示されないようになり、追加のクリックが必要になる
問題は、「はい」ボタンを使用してダイアログを閉じるときに、プラグインが$(element).trigger('click');
を使用して元のアンカー要素のクリックイベントを発生させることです。
これはブラウザがリンクをたどることはありませんが、ダイアログの後でマウスを2回クリックすると、は終了します。は動作します。
プラグインはここでプラグインあなたがプラグインに何をしたいのか含む関数を渡す必要が
;(function ($, window, document, undefined)
{
var pluginName = "submitConfirm";
var Plugin = function(element)
{
var confirmed = false;
var dialog = $('<div style="display:none;">')
.html('Visit this link?')
.dialog(
{
modal: true,
title: 'Visit Link?',
autoOpen: false,
buttons :
[
{
text: 'Yes',
click: function(event)
{
confirmed = true;
dialog.dialog("close");
$(element).trigger('click');
}
},
{
text: 'No',
click: function(event)
{
confirmed = false;
dialog.dialog("close");
}
}
]
});
$(element).bind('click',
function(event)
{
if (! confirmed)
{
dialog.dialog("open");
event.preventDefault();
}
});
};
// Init the plugin
$.fn[pluginName] = function(options)
{
return this.each(function()
{
// Prevent re-instantiation
if (!$.data(this, 'plugin_' + pluginName))
{
$.data(this, 'plugin_' + pluginName,
new Plugin(this, options));
}
});
};
})(jQuery);
onConfirmは、プラグインのデフォルトでtrueを返すようにデフォルト設定されています。そのダイアログのプラグインには、それを呼び出すボタンが設定されています。 onを確認するとtrueに戻り、プラグインのこのビットが呼び出されるはずです: 'dialog.dialog(" close "); if(確認済み){$(要素).trigger(要素イベント); } ' –
私はコンソールログをプラグインに入れています。何らかの理由で、トリガーを介して起こっているアンカーのクリックがキャンセルされているように見える場合があります。 –
あなたの答えを編集したい場合は、私が達成しようとしているものにもっと直接的になるように質問を再構成しました。ありがとう。 –