Javascript .show()在IE上不起作用
我正在从事这个项目: 如果您转到左侧菜单上的Dyer dhe dritare,用Chrome和FF将其中一个元素(门或窗)拖动到右侧(桌子),我为该元素添加的3个选项将显示,因此:Javascript .show()在IE上不起作用,javascript,jquery,internet-explorer,internet-explorer-9,Javascript,Jquery,Internet Explorer,Internet Explorer 9,我正在从事这个项目: 如果您转到左侧菜单上的Dyer dhe dritare,用Chrome和FF将其中一个元素(门或窗)拖动到右侧(桌子),我为该元素添加的3个选项将显示,因此:$(“p”,this.show()可以工作,但在IE9中,当我拖动一个元素时,它不会显示用于拖动、旋转或删除的选项!我不知道怎么了 事情就是这样发生的: $(".drag").draggable({ revert : 'invalid', helper : 'clone', conta
$(“p”,this.show()代码>可以工作,但在IE9中,当我拖动一个元素时,它不会显示用于拖动、旋转或删除的选项!我不知道怎么了
事情就是这样发生的:
$(".drag").draggable({
revert : 'invalid',
helper : 'clone',
containment : 'desk',
cursorAt : { left:-11,top:-1 },
//When first dragged
stop : function(ev, ui) {
/*========================================================================*/
var pos = $(ui.helper).offset();
var left_ = ev.originalEvent.pageX - $("#desk").position().left;
var top_ = ev.originalEvent.pageY - $("#desk").position().top;
// get widht and height of the container div#desk element
var w_ = $("#desk").width();
var h_ = $("#desk").height();
objName = "#clonediv"+counter++;
objNamex = "clonediv"+counter;
$(objName).css({"left":left_,"top":top_});
var gag = 0;
$(objName).click(function () {
$("p", this).show();
$(this).addClass("selektume");
$('.rotate_handle').unbind('click');
$('.rotate_handle').click(function(){
gag += 45;
$('.selektume').rotate(gag+'deg');
});
$('.delete_handle').click(function() {
$('.selektume').remove();
});
return false;
});
$(document).click(function () {
$("p").hide();
$(".lgutipT").removeClass("selektume");
});
//check if dropped inside the conteiner div#des
if((left_ >= 0) && (left_ <= w_) && (top_ >= 0) && (top_ <= h_))
{
$(objName).css({"left":left_,"top":top_});
// assign a z-index value
zindex = left_ + top_;
$(objName).css({"z-index":zindex});
$(objName).addClass("lgutipT");
//$(objName).addClass("ui-widget-content");
$(objName).removeClass("drag");
$(objName).append('<p><img class="handler" src="images/move_button.png"><img class="rotate_handle" src="images/rotate_button.png"><img class="delete_handle" src="images/delete_button.png"></p>');
$("p", this).show();
}
/*========================================================================*/
//When an existiung object is dragged
$(objName).draggable({
containment : "#desk",
handle : ".handler",
cursor : "move"
});
}
});
$(“.drag”).draggable({
还原:“无效”,
助手:“克隆”,
遏制:“办公桌”,
光标:{左:-11,上:-1},
//第一次拖动时
停止:功能(ev、ui){
/*========================================================================*/
var pos=$(ui.helper.offset();
var left=ev.originalEvent.pageX-$(“#desk”).position().left;
var top=ev.originalEvent.pageY-$(“#desk”).position().top;
//获取container div#desk元素的宽度和高度
var w_35;=$(“#桌面”).width();
var h#=$(“#桌”).height();
objName=“#clonediv”+计数器++;
objNamex=“clonediv”+计数器;
css({“left”:left_,“top”:top_});
var-gag=0;
$(对象名)。单击(函数(){
$(“p”,this.show();
$(this.addClass(“selektum”);
$('.rotate_handle')。解除绑定('click');
$('.rotate_handle')。单击(函数(){
gag+=45;
$('.selektum')。旋转(gag+'deg');
});
$('.delete_handle')。单击(function(){
$('.selektum').remove();
});
返回false;
});
$(文档)。单击(函数(){
$(“p”).hide();
$(.lgutipT”).removeClass(“selektum”);
});
//检查是否落在容器分区内
if((left_>=0)&&(left_>=0)&&&(top)&是一个非常棘手的问题,因为没有关于jQuery UI如何在核心级别处理事件的好文档。解决方案是取消绑定并重新绑定单击事件。在IE中,单击事件的处理方式与其他浏览器不同。解决方案只是在完成所有操作后重新绑定单击事件(1/1000秒延迟)
我的解决方案是移动click事件,在拖动开始时添加一个解除绑定,并在重新绑定$(文档)时添加一个setTimeout()
。拖动完成后单击()
事件侦听器
查看下面的源以查看工作解决方案
复制HTML并将其粘贴到您的开发环境。发布您正在使用的一些代码。我修复了代码上的缩进。我还删除了字符串上的转义字符。但是,我不确定为什么会出现这些字符。如果它们在您的实际源文件中,那就是一个问题。这是因为我使用PHP返回它们,以便这就是为什么我要逃避这些角色,你真的认为这是一个问题吗?我真的很抱歉,但我不明白我该怎么做,这对我有什么帮助吗?:啊,我复制并粘贴了错误的JSFIDLE,我用正确的链接更新了我的帖子。对不起!哦,没关系,只是你吓了我一跳:)我以为我不明白@MattLo,你说的“没有关于jQueryUI如何在核心级别处理事件的好文档”是什么意思?文档的意思是在人类可读的级别,大的描述。(比如jQueryDocs或PHP Docs)如果我通过内联描述阅读它是如何工作的,我会多花一个小时。对于jQuery UI如何在跨浏览器级别处理事件冒泡,是否有明确的定义/描述?