0

これは非常に単純な質問だと思いますが、対処できません。jspに、次のようないくつかのリスト項目を含む順序付けられていないリストがあります。

<li>
    <p class="text">Some text.</p>
    <table class="answer-details" style="width: 100%">
    <tbody>
        <tr class="tr">
            <td style="width: 50%;">
                <div class="msg-modification" display="inline" align="right">
                    <a id="modify" class="delete-answer" href="#">Delete</a>
                </div>
            </td>
            <td style="width: 50%; vertical-align: bottom;">
                <img src="...">
                <a class="answer-author" href="..." target="_blank">User name</a>
                <div class="answer-info">29/06/2011</div>
            </td>
        </tr>                               
    </tbody>
</table>

ご覧のとおり、すべてのリストアイテムには、メッセージ/回答を削除するためのリンクがあります。私がやろうとしているのは、jQueryを使用して、リンクをクリックしたときに同じliに情報メッセージを表示し、そのメッセージを除くすべてのコンテンツをリストアイテムに削除することです。

これが私のjQueryコードです:

$('.esborrar-resposta').click(function(event) {
    event.preventDefault();

    $(this).closest('.li').children('p').remove(); // it doesn't work
    $(this).closest('.tr').before('<tr><td><div class="output">Information message</div></td></tr>');
    $(this).closest('.tr').remove();
});

上記のコードは、段落タグを除くすべてを削除します。これは私の結果のHTMLコードです:

<li>
    <p>Some text.</p>
    <table class="answer-details" style="width: 100%">
            <tbody>
                    <tr><td><div class="output">Information message</div></td></tr>                             
            </tbody>
    </table>
</li>

この段落タグを削除したいのですが、運が悪かったのでこれらのオプションを試しました。

$(this).closest('.li').children('p').remove();

$(this).closest('.text').remove()

(段落タグがリンクタグの親ではないため、機能しない可能性があります)

誰かが私がそれを削除するのを手伝ってもらえますか?

4

3 に答える 3

1

試す

$("li")

それ以外の

$(".li")


$(this).closest('li').children('p').remove();

li(その先頭のドット)は、それ自体ではなく、.検索していることを意味するためですclass="li"<li>

于 2011-07-22T11:42:19.250 に答える
1

liはクラスではありません $(this).closest('.li').children('p').remove();

使用する$(this).closest('li').children('p').remove();

于 2011-07-22T11:44:22.000 に答える
1

単純:

$(this).closest('.li').children('p').remove();

li要素ではなく、クラスを持つ要素を検索し<li>ます。と置換する:

$(this).closest('li').children('p').remove();`

$(this).closest('.text').remove()

.closest()次のようになるため、機能しません。

現在の要素から始まり、DOMツリーを上に向かって、セレクターに一致する最初の祖先要素を取得します。(私の強調)

p.text要素は祖先ではなく、祖先の兄弟です。したがって、以下が機能した可能性があります。

$(this).closest('li').find('.text').remove();
于 2011-07-22T11:46:32.247 に答える