我需要通过外部元素删除元素。在以下示例中,用户将关注.content元素,然后显示.delete元素。通过点击.delete-element应该删除焦点.content-element。通过外部元素删除元素
我的问题是如何识别元素。我试图给这个元素一个id/class,但是当我点击delete元素时,blur函数(这是用户不删除的情况下需要的,但是在其他地方单击时)需要先删除该类。
也许我试图(通过增加临时类)是走错了路......
HTML:
<div class="delete" style="display: none;">Delete</div>
<div class="content" contenteditable="true"></div>
<div class="content" contenteditable="true"></div>
<div class="content" contenteditable="true"></div>
<div class="content" contenteditable="true"></div>
JS:
$('.delete').on('click', function() {
$('.active').remove();
});
$('.content').on('focus', function() {
$(this).addClass('active');
$('.delete').show();
});
$('.content').on('blur', function() {
$(this).removeClass('active');
$('.delete').hide();
});
更新:
http://jsfiddle.net/ze1kvh0g/9/
我想我需要模糊功能:也许用户正在做的事情聚焦。内容元素之后完全地不同(即滚动或点击任何其他网站)。在这种情况下,焦点会丢失,主动类不得不被移除。
我错了吗?
更新2:
这是(Pr0gr4mm3r的组合和Moshtaf的答案)工作方案:http://jsfiddle.net/ze1kvh0g/13/ 不知道该代码可以优化变得有点小...
var activeElement, isOnDeleteButton = false;
$(".delete").hover(function() {
isOnDeleteButton = true;
}, function() {
isOnDeleteButton = false;
});
$('.delete').on('click', function() {
if (activeElement) {
activeElement.remove();
delete activeElement;
}
$(this).hide();
});
$('.content').on('focus', function() {
activeElement = $(this);
$('.delete').show();
});
$('.content').on('blur', function() {
if (!isOnDeleteButton) $('.delete').hide();
});
“试试这个”答案通常没有用。说*你做了什么/改变了,为什么*。 – 2014-08-31 08:07:30
谢谢。这似乎工作。我只是想让代码变得更小...(可能使用悬停和切换) – user3142695 2014-08-31 08:47:04