0

デバッグするjsfiddle :
http://jsfiddle.net/ZpsCX/

新しい更新:
これは html です

<li>Something</li>
<div class='a'>
 <div class='x'>REMOVE</div>
</div>

親に移動してから前に移動して、LIを削除しようとしています:

 $('.x').click(function(){
    $(this).parent().prev().remove();
 });

しかし、私がこれを使用した場合

 $('.x').click(function(){
   if(bla bla bla){ // and it returns TRUE
     $(this).parent().prev().remove();
   }
 });

それは動作しません

4

4 に答える 4

0

修正済み:http://jsfiddle.net/ZpsCX/11/

ifステートメントは常にtrueを返すため、削除しました。また、jQueryを含めてラッパーを追加する必要がありました:)

于 2012-06-04T01:13:02.387 に答える
0

私はあなたのフィドルを少し修正しました。jQueryが含まれていることを確認してから、コードを次のようにラップする必要があります。

$(document).ready(function() {
 $('.x').click(function(){
  if(true){ // and it returns TRUE
   $(this).parent().prev().remove();
  }
 });
});

元のコードはこれで機能します。

http://jsfiddle.net/ZpsCX/4/

于 2012-06-04T01:26:56.467 に答える
0

OK、ついにフィドルで完全なコードを表示したので、問題は、をthis実行しようとする前に参照する要素を削除していること$(this).parent().prev().remove();であり、それが機能しないため機能しないことがthisわかります。いなくなったら親はいらない…

次のように、逆の方法で行う必要があります。

$(".x").live("click", function(x) {
    // if clicked ".x" has no siblings it must be the last one
    // in the current group
    if ($(this).siblings(".x").length == 0) {
        $(this).parent().prev().remove();
    }
    $(this).remove();
});

http://jsfiddle.net/ZpsCX/12/

li 要素は ul または ol に属している必要があり、li の兄弟として div を使用することは有効ではないことに注意してください (ほとんどのブラウザーはこれを許容しており、問題なく使用できます)。

于 2012-06-04T01:28:20.340 に答える
0

コードが機能しない理由は、div がclass = 'x'li タグ内にネストされていないためです。そのため、.parent を呼び出しても li が見つかりません。

li 内に div をネストして、次のコードを使用できます。

HTML:

<ul>
    <li>
        Something
        <div class='a'>
            <div class='x'>REMOVE</div>
        </div>
    </li>
    <li>
        Something Else
        <div class='a'>
            <div class='x'>REMOVE</div>
        </div>
    </li>
</ul>

Jクエリ:

$('.x').click(function(){
    $(this).parents('li').remove();
 });​

JSFIDDLE の例

于 2012-06-04T01:29:09.823 に答える