2012-03-14 19 views
1

私はここを見ましたが、私がしようとしていることに当てはまるものは見つかりませんでした。ここでdelete_itemのクリックイベントで私のAJAX呼び出しは、次のとおりです。jQuery:セレクタに変数を渡す方法

$.ajax({ 
    type: 'POST', 
    url: '<?php echo site_url('channel_partners/cms/delete'); ?>', 
    data: 'article_id=' + article_id, 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
     $('li').remove($(this).id); 
    }, 
    error: function(xhr, status, error) { 
     alert('Error occurred: ' + status); 
    } 
}); 

それは働いていないことで削除コールとラインです。 $(this).idは削除しようとしているliのIDを正しく参照しています。私は自分の問題は私が削除呼び出しを使用していると思う。私は構文に何か間違っていると思うが、私は何を伝えることはできない。私はAPIに従ったが、これほど具体的ではなかった。助けてもらえますか?ありがとう。

ああ、私のDOMは次のようになります。

<li id="26"><a class="delete_item" ...></a><li> 
+1

まず、 '$(this)).id'は' $() 'が' .id'プロパティを持っているとは思わないので、正しく表示されません。 'this.id'は動作すべきです、' $(this).prop( 'id') 'です。最初の要素は要素のプロパティを取得するためにjQueryのオーバーヘッドを必要としないため、「高速化」する必要があります。 –

+0

FYIの場合、IDは文字で始まる必要があります。 http://www.w3.org/TR/html401/types.html#type-name –

+0

第2に、コールバック内の 'this'はDOM要素を参照していません。 –

答えて

1

非常にシンプル:

$(this).remove(); 

あなたが実行している場合は特に、現在の「これ」への参照をキャッシュすることもできますasyncronouslyスクリプト:

var pEl = $(this); 
$.ajax({...snip... 
    success:function(data){ 
     pEl.remove(); 
    } 
+0

これは、リンクがあるタグであるため、これを行うことはできません。上記の私の編集を参照してください。 – sehummel

+0

意味がありません。とにかく削除しようとしているIDがその要素のIDです。 –

+1

jQueryに 'pEl'を再度渡す必要はありません。 'pEl.remov()'で十分です。 –

-1
$("li").attr("id",$(this).id).remove() 
+0

'$(this).id'がIDを返す場合でも、これはすべての' li'要素のidをその値に設定し、すべての 'li'要素を削除します。 –

+0

ファイヤーバグは、それは機能ではないと言います。 – sehummel

+0

次に、私が望むものだけを削除するにはどうしたらいいですか? – sehummel

0

私は、このajax呼び出しが実行されているときにリンクが制御されると仮定しているので、$(this)オブジェクトは<> < li>要素を参照しています。成功イベントの中で直接使用することはできません。だからここにあなたがかもしれないものである:

:で

  1. あなたは、あなたがこのようなli要素を削除するために使用することができますバックに成功し、削除の
  2. を削除されたアイテムのIDを返すことがあり、「channel_partners/CMS /削除」

    $("li[id=" + data + "]").remove(); 
    

次のように使用することにより、あなたも、サーバーから「ERROR」のように戻ってデータをサーバーから失敗した削除結果を得ることができます。

関連する問題