如何将鼠标左键上附加的工具栏删除到主体或其他元素
how to remove appended toolbar on mouseleave to body or another element?
在我之前的问题中,Jivings没有给出完整的答案,我对他的答案有问题。当我mouseenter
一个元素时,一个工具栏会附加到此元素,但当我将鼠标从工具栏移到主体(或另一个元素,但不是当前元素!)时,工具栏不会消失。如何将鼠标上的工具栏移到正文?
var toolbar = $('<div class="toolbar"><span>leave toolbar to element</span></div>');
toolbar.on('mouseleave',function(e){
toolbar.remove();
});
var enter = function(e) {
setTimeout(function(){
toolbar.addClass('widget-over');
},100);
$('body').prepend(toolbar);
toolbar.css({
left: $el.offset().left,
top: $el.offset().top - toolbar.height() - 20
});
};
var leave = function(e){
if ($(e.relatedTarget).closest(toolbar).length) return;
toolbar.removeClass('widget-over');
toolbar.remove();
}
var $el = $('.el')
.on('mouseenter', enter)
.on('mouseleave', leave);
问题小提琴->http://jsfiddle.net/3r8wrumL/7/
动态移除和添加具有新类和绑定的元素。
$(function () {
var toolbar = $('<div class="toolbar"><span>leave toolbar to body and mouseenter element again</span></div>');
var enter = function(e) {
console.log('enter')
setTimeout(function(){
toolbar.addClass('widget-over');
},500);
$('body').prepend(toolbar.on('mouseleave',function(e){
$(this).removeClass("widget-over");
$(this).remove();
console.log('toolbar out');
}));
toolbar.css({
left: $el.offset().left,
top: $el.offset().top - toolbar.height() - 20
});
};
var leave = function(e){
if ($(e.relatedTarget).closest(toolbar).length) return;
toolbar.removeClass('widget-over');
toolbar.remove();
}
var $el = $('.el')
.on('mouseenter', enter)
.on('mouseleave', leave) ;
});
请替换您的此代码
toolbar.on('mouseleave',function(e){
toolbar.remove();
});
使用此代码
$(document).on("mouseleave",".toolbar",function(){
$(".toolbar").remove();
});
这里发生的是,您的工具栏是通过jquery动态创建的。这就是不应用mouseleave事件的原因。
如果您想在每个动态创建的元素上应用事件,请使用以下语法。
$(document).on("eventname","selector",function(){
// your code goes here
});
问题是,您在第一次将工具栏准备到正文中时,就将事件绑定到了工具栏上。
正确的方法是用新的onmouseleave绑定预挂工具栏。就像这样。
$(function () {
var toolbar = $('<div class="toolbar"><span>leave toolbar to body</span></div>');
var enter = function(e) {
console.log('enter')
setTimeout(function(){
toolbar.addClass('widget-over');
},100);
$('body').prepend(toolbar.on('mouseleave',function(e){
$(this).detach();
console.log('toolbar out');
}));
toolbar.css({
left: $el.offset().left,
top: $el.offset().top - toolbar.height() - 20
});
};
var leave = function(e){
if ($(e.relatedTarget).closest(toolbar).length) return;
toolbar.removeClass('widget-over');
toolbar.remove();
}
var $el = $('.el')
.on('mouseenter', enter)
.on('mouseleave', leave) ;
});
希望它能有所帮助!
相关文章:
- 删除CKEditor工具栏按钮,但不删除功能
- Sencha触摸:工具栏无法正常滚动
- 使用网格ID隐藏剑道网格工具栏
- 如何在IE中隐藏菜单栏,工具栏
- 将此事件添加到工具栏
- ExtJS--如何居中对齐两个工具栏按钮
- 在某些URL上显示火狐插件工具栏
- 如何将自定义图标添加到 JqGrid 顶级工具栏按钮
- 文本编辑工具栏解决方案 (js),具有低级自定义
- Ext JS工具栏和痕迹导航示例在JSFiddle中不起作用
- 如何在较新版本的 Free-JQGard 中重置搜索工具栏和搜索过滤器
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- ExtJS 4-在调整窗口大小时,溢出的工具栏会失去控制器
- 如何将鼠标左键上附加的工具栏删除到主体或其他元素
- CKEditor无法删除工具栏,直到我单击它
- 如何从CKEditor的工具栏中只删除一个项目
- 删除绑定和CK编辑器工具栏不显示
- 以编程方式删除工具栏按钮
- 删除浏览器窗口工具栏和菜单栏没有窗口打开
- 如何从ckeditor中删除链接工具栏