我需要通過外部元素刪除元素。在以下示例中,用戶將關注.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