0

contenteditable の後に離れるときに、p 要素にコンテンツがない場合、または内部に br がある場合、p 要素を削除する関数を作成しました。問題は、.blur() !? 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

4 に答える 4

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);
    }
});​
于 2012-05-13T23:54:21.723 に答える
1
if( $(this).html() == "" || "<br>")

この行が言っているのは、「htmlが空の場合、または<br>何かがある場合」です。

つまり、常に true であるため、コンテンツが何であれ削除されます。

これを試して:

if( $(this).html().replace(/\s|<br ?\/?>/) == "")

これにより、スペース (最も重要なのは先頭と末尾) と改行が取り除かれ、結果が空かどうかが確認されます。

于 2012-05-13T23:55:22.300 に答える
1
var html = $(this).html();
if (html == "" || html == "<br>") {....do stuff....}
于 2012-05-13T23:56:36.230 に答える
0

なぜ CSS を使用しないのですか?

p:empty {
    display: none 
}
于 2012-05-14T00:12:49.470 に答える