我使用 jQuery ui 按钮动态创建看起来像按钮的 div。单击这些 div 应打开一个对话框,单击其图标应删除 div(按钮)。我尝试了几种不同的方法,但我似乎无法得到我想要的结果。
我实现的最接近的事情是在图标和 div 本身上使用 onclick,但问题是,当单击图标时,我会先调用图标的 onclick,然后再调用 div 的 onclick,这将导致对话框在之后打开div 已被删除。我还尝试在图标的 onclick 内的 div 上添加一个禁用属性并将其设置为 true,并在 div 的 onclick 内检查该属性,但这不起作用(我有点明白为什么。)
所以我的问题是:我怎样才能创建一个按钮,当点击它时会打开一个对话框,并带有一个图标,当点击它时,它会删除按钮?
代码:
function Add(value) {
var buttonid = "SearchResultBox" + ($("#SearchBoxAddedSearches .SearchResultBox").length + 1);
$("#SearchBoxAddedSearches").append("<div id='" + buttonid + "' class='SearchResultBox' onclick='ButtonClicked(this);'>" + value + "</div>");
$("#SearchBoxTextField").contents().filter(function () { return this.nodeType === 3; }).remove();
$('.SearchResultBox').button({
icons: {
primary: "ui-icon-circle-close"
}
}).delegate("span.ui-icon-circle-close", "click", function () {
var btnId = $(this).closest("div").remove().attr("aria-controls");
$("#" + btnId).remove();
});
$('.ui-icon-circle-close').attr('onclick', 'IconCloseClicked(this);');
}
function IconCloseClicked(value) {
$(value).parent().prop("disable", "true");
//alert($(value).parent().attr("id"));
alert("icon");
Remove($(value).parent());
}
function ButtonClicked(o) {
var test = $(o).prop("disable");
alert("div");
if ($(o).attr("disable") == undefined) {
Opendialog();
}
}
function Remove(value) {
$(value).remove();
}
function Opendialog() {
$("#dialog").dialog("open");
}
附言。我使用按钮的原因是因为它是看起来最像我在 jquery ui 中想要的小部件。
更新(我最终得到了什么):
function Add(value) {
var buttonid = "SearchResultBox" + ($("#SearchBoxAddedSearches .SearchResultBox").length + 1);
$("#SearchBoxAddedSearches").append("<div id='" + buttonid + "' class='SearchResultBox'>" + value + "</div>");
$("#SearchBoxTextField").contents().filter(function () { return this.nodeType === 3; }).remove();
$('.SearchResultBox').button({
icons: {
primary: "ui-icon-circle-close"
}
}).click(function (e) {
Opendialog();
});
$('.ui-icon-circle-close').click(function (e) {
$(this).parent().remove();
e.stopPropagation();
});
}
function Opendialog() {
$("#dialog").dialog("open");
}