我是 jquery 的新手,正在寻找一种好的、不显眼的方法来将 javascript“confirm”的 jquery 替换添加到 HTML 元素。具体来说,我希望能够将它用于 ASP.NET 按钮、LinkButtons、ImageButtons、HyperLink 等,其中客户端意味着:
<input type="submit"... />
<a href="javascript:__doPostBack... />
<input type="image"... />
... etc ...
我提出的一个解决方案是向 ASP.NET 服务器控件(以及客户端元素)添加自定义属性,例如:
<asp:ImageButton ... data-confirmPrompt="OK to delete customer 123?" ... />
呈现为:
<input type="image" data-confirmPrompt="OK to delete customer 123?" ... />
然后,我只需要为具有此自定义属性的元素添加一个单击处理程序。下面的例子使用jquery 即兴,但同样的原理适用于任何 jquery 模式对话框实现:
$(document).ready(function () {
$("[data-confirmPrompt]").click(function (event) {
var confirmPrompt = event.currentTarget.attributes['data-confirmPrompt'].value;
event.preventDefault();
$.prompt(confirmPrompt, {
buttons: { Yes: true, No: false },
callback: function (v, m, f) {
if (v) {
// User clicked Yes. Unbind handler to avoid
// recursion, then click the target element again
$(event.currentTarget).unbind('click');
event.currentTarget.click();
}
}
});
});
});
这一切似乎在 XHTML 1.0 Strict 的 IE8 上运行良好。所以我的问题是:
所有现代浏览器都会接受这样的自定义属性吗?
我知道这并不严格符合标准。谁能建议一种符合标准、至少不引人注目且易于使用的替代方案?
UPDATE added data-
自定义属性的前缀,据我了解至少使其兼容 HTML5。
UPDATE 2 See 这个后续问题以获得改进的解决方案。