在jQuery可点击区域内创建死区
包括,和其中一个ui主题(我非常喜欢) (请容忍我,底部有一个问题,如果你愿意,你可以跳到这个问题,只是想展示一下我是如何到达我现在的位置的) (很抱歉,如果代码中有我遗漏的任何错误或位,它确实可以工作,但为了便于阅读,正在切割代码) 我从项目提供的标准开始: 然后我想好了,现在我想dblclick页面上的项目,并显示一个对话框进行编辑 所以我补充说:在jQuery可点击区域内创建死区,jquery,jquery-ui,click,double-click,Jquery,Jquery Ui,Click,Double Click,包括,和其中一个ui主题(我非常喜欢) (请容忍我,底部有一个问题,如果你愿意,你可以跳到这个问题,只是想展示一下我是如何到达我现在的位置的) (很抱歉,如果代码中有我遗漏的任何错误或位,它确实可以工作,但为了便于阅读,正在切割代码) 我从项目提供的标准开始: 然后我想好了,现在我想dblclick页面上的项目,并显示一个对话框进行编辑 所以我补充说: <div id="itemDialog"></div> $("#itemDialog").dialog({ aut
<div id="itemDialog"></div>
$("#itemDialog").dialog({ autoOpen: false, modal:true });
$("#pageItems li").live("dblclick", function () {
openDialog(this);
});
function openDialog(elem) {
$("#itemDialog").dialog('open');
}
我修改了copythis功能以允许包含按钮:
function copythis(elem) {
var selected = $(elem).closest("li").clone();
selected.find(".buttons").remove();
$("#pageItems").append(selected).html();
}
这就是我现在所在的地方,也是我目前正在研究的问题
如果dblclick pageElement,将复制该元素(如预期的那样)
如果单击“添加”按钮,该按钮也将复制新元素(如预期的那样)
由于pageElement dblclick事件附加到pageElement li标记上,并且add button click事件位于嵌套在其中的跨度标记上,因此如果我快速单击add按钮,有时会触发dblclick事件,因此会向pageItem列表添加多个元素
我想做的是为围绕add按钮项的dblclick事件创建一个死区
我愿意接受任何想法
干杯
Luke我知道这一点用处不大,但我建议不要听dblclick——它在不同的客户机中工作方式不同——而jquery并没有掩盖所有这些,b)你不想让用户双击,这很复杂。好吧,所以我找到了一个答案,可能不是最好的,但它确实有效 它涉及定义一个全局变量:
var clicked = 0;
然后,在ui的实时事件上,添加将值设置为1,然后设置超时以延迟值重置回0:
$(".ui-add").live("click", function () {
clicked = 1;
copythis(this);
setTimeout(function () { clicked = 0;}, 100);
});
那么在我的pageElement dblclick函数中:
$("#pageElements li").dblclick(function () {
if (clicked == 0) {
copythis(this);
}
});
虽然不理想,但它很有效。如果您能将它放进去让我们感受一下,那就太好了
$("#pageElements li").live("mouseenter", function () { $(this).append(addButton); }).live("mouseleave", function () { $(this).find(".buttons").remove(); });
$(".ui-add").live("click", function () {
copythis(this);
});
function copythis(elem) {
var selected = $(elem).closest("li").clone();
selected.find(".buttons").remove();
$("#pageItems").append(selected).html();
}
var clicked = 0;
$(".ui-add").live("click", function () {
clicked = 1;
copythis(this);
setTimeout(function () { clicked = 0;}, 100);
});
$("#pageElements li").dblclick(function () {
if (clicked == 0) {
copythis(this);
}
});