我已经制作了一个函数,如果它没有任何内容或者在内部有一个br,当它在满足后离开时应该删除一个p元素。问题是,当.blur()!它删除了HAS内容的li。 我疯了,因为我确定它在10分钟前工作.........
这是功能:
$('p').live('blur', function() {
localStorage.setItem('todo', listan.innerHTML);
color();
if ($(this).html() == "" || "<br>")
{
console.log($(this).html());
$(this).parent().remove();
localStorage.setItem('todo', listan.innerHTML);
}
});
列表(“listan”)如下所示:
<ul ID="listan">
<li><p contenteditable="true" class="thing">something</p><input type="button" value="ta bort" class="delete"></li>
</ul>
答案 0 :(得分:3)
从代码中删除.parent()
,因为“模糊”p
的父元素是li
。还要检查你的if语句。
$('p').live('blur', function() {
localStorage.setItem('todo', listan.innerHTML);
color();
var html = $(this).html();
if (html == "" || html == "<br>") {
console.log($(this).html());
$(this).remove();
localStorage.setItem('todo', listan.innerHTML);
}
});
答案 1 :(得分:1)
if( $(this).html() == "" || "<br>")
这句话的意思是“如果html是空的,或者<br>
是什么”。
所以它总是如此,所以无论内容是什么都会被删除。
试试这个:
if( $(this).html().replace(/\s|<br ?\/?>/) == "")
这将删除空格(最重要的是前导和尾随)和换行符,看看结果是否为空。
答案 2 :(得分:1)
var html = $(this).html();
if (html == "" || html == "<br>") {....do stuff....}
答案 3 :(得分:0)
为什么不使用CSS?
p:empty {
display: none
}