功能删除空<p>删除</p> <p>的内容</p>

时间:2012-05-13 23:51:10

标签: javascript jquery html html5

我已经制作了一个函数,如果它没有任何内容或者在内部有一个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>

4 个答案:

答案 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 
}