单击外部事件在 iframe 上不起作用
Clickoutside event doen't work on iframe
这是一个富文本编辑器,有一个div显示用户输入的内容,就像这样:
<div class=‘content’>
<iframe data-role=text-editable.></iframe>
</div>
当我点击一个用于调用颜色面板的图标时,面板将 show.And 我希望当我在面板外单击时,它将是 hide.so 我的代码是:
var color_panel = $('.color-panel');
color_panel.on("clickoutside", function (e) {
var t = $(e.target);
if ($.contains(color_panel[0], t[0]))
return;
color_panel.hide();
})
当我在面板外部单击时效果很好,除非我单击 iframe.when 我单击 ifame,没有任何反应,面板仍然显示,
求助......我想知道原因。请问...ifame不是面板外的dom元素吗?
您可以通过监听网页正文元素上的点击(因此,点击任何元素)来监听外部点击,然后您可以通过创建另一个事件来将您的 .color_panel
排除在该事件之外"when I get clicked on, ignore any other clicks"。效果将完全是你想要的,你可以听到外部点击:
var panelOpen = false;
$('body').click(function(event) {
if (panelOpen) {
panelOpen = false;
color_panel.hide();
}
});
$('.color_panel').click(function(event) {
panelOpen = true;
//callYourMethodToShowThePanelHere();
e.preventDefault(); // these methods will stop the body click event
e.stopPropagation();
return false;
});
这是一个富文本编辑器,有一个div显示用户输入的内容,就像这样:
<div class=‘content’>
<iframe data-role=text-editable.></iframe>
</div>
当我点击一个用于调用颜色面板的图标时,面板将 show.And 我希望当我在面板外单击时,它将是 hide.so 我的代码是:
var color_panel = $('.color-panel');
color_panel.on("clickoutside", function (e) {
var t = $(e.target);
if ($.contains(color_panel[0], t[0]))
return;
color_panel.hide();
})
当我在面板外部单击时效果很好,除非我单击 iframe.when 我单击 ifame,没有任何反应,面板仍然显示,
求助......我想知道原因。请问...ifame不是面板外的dom元素吗?
您可以通过监听网页正文元素上的点击(因此,点击任何元素)来监听外部点击,然后您可以通过创建另一个事件来将您的 .color_panel
排除在该事件之外"when I get clicked on, ignore any other clicks"。效果将完全是你想要的,你可以听到外部点击:
var panelOpen = false;
$('body').click(function(event) {
if (panelOpen) {
panelOpen = false;
color_panel.hide();
}
});
$('.color_panel').click(function(event) {
panelOpen = true;
//callYourMethodToShowThePanelHere();
e.preventDefault(); // these methods will stop the body click event
e.stopPropagation();
return false;
});