2012-04-29 3 views
2

У меня есть ссылка внутри элемента <li> и требуется, чтобы элемент <li> был удален при нажатии ссылки. Вот мой код:JQuery - удалить li, содержащую ссылку

<li id='i80'> 
<div class='singleitem'> 
    <img src='/css/images/image.png' width='30' height='30' /> 
    <div id='listtext'><h1>Title</h1></div> 
    <a class='delete' id='80' href='#'></a> 
    <div id='helper'></div> 
</div> 
</li> 

И мой Jquery код:

$(".delete").click(function(e){ 
var del_id = $(this).attr('id'); 
e.preventDefault(); 
$.post("/add/delete.php", { iid: del_id } ,function(data){ 
    if(data.status == 'deleted'); 
    { 
    $(this).closest("li").remove(); 
    } 
}); 
}); 

Аякса работает отлично и «удален» статус посылается обратно правильно, однако, что одна линия, которая включает в себя удаление родитель li просто не работает. Есть идеи? Благодарю.

EDIT:

Я заметил, что новые элементы списка Я добавил динамически в мой существующий ul здесь не работают. Это потому, что это просто загружается, когда страница загружается изначально, а затем не будет работать с динамически обновляемым контентом?

ответ

4

$ (этот) объект внутри блока ajax не является объектом $ (". Delete"). Вам нужно будет сделать что-то вроде этого:

$(".delete").click(function(e){ 
var $del_button = $(this); 
var del_id = $(this).attr('id'); 
e.preventDefault(); 
$.post("/add/delete.php", { iid: del_id } ,function(data){ 
    if(data.status == 'deleted'); 
    { 
    $del_button.closest("li").remove(); 
    } 
}); 
}); 
+0

Вы сделали это! Большое спасибо за быстрый ответ, теперь он отлично работает. Я помечаю это как ответ, как только истечет время. Еще раз спасибо! – nbu

+0

вы очень желанны! – mask8

0

try $ (this) .parent(). Remove();

(хотя он чувствует, как пилят сук, на котором сидишь ..)

+0

Вы должны объяснить, как это все решает. – gdoron

+0

вы пробовали? ваш код должен работать - но (видя, что это не так) делает мой? – Andiih

+0

Мне не нужно, я знаю, в чем проблема, и что такое «ближайший» и «родительский» ... – gdoron

0

попробовать следующее, вы должны ссылаться на родителю

$(this).parent().remove() 
5
$(".delete").click(function(e){ 
var del_btn = $(this);    // cahed 
var del_id = del_btn.attr('id'); 
e.preventDefault(); 
$.post("/add/delete.php", { iid: del_id } ,function(data){ 
    if(data.status == 'deleted'); 
    { 
    del_btn.closest("li").remove(); // used 
    } 
}); 
}); 


EDIT чтобы соответствовать дополнительной проблеме, заданной ОП.
Используйте метод .on() как:

$(".singleitem").on('click', 'a.delete', function(e){ 
var del_btn = $(this);    // cahed 
var del_id = del_btn.attr('id'); 
e.preventDefault(); 
$.post("/add/delete.php", { iid: del_id } ,function(data){ 
    if(data.status == 'deleted'); 
    { 
    del_btn.closest("li").remove(); // used 
    } 
}); 
}); 
+0

Вот и все! Большое спасибо за быстрый ответ! – nbu

+0

@nbu - Да :) Я вижу, что я разделяю тот же ответ с * mask8 *. Благодаря вам. Счастливое кодирование! –

+0

еще один вопрос: я заметил, что новые элементы списка, которые я добавил динамически для моей существующей ul, здесь не работают. это потому, что это просто загружается, когда страница загружается изначально, а затем не будет работать с динамически обновляемым контентом? – nbu

Смежные вопросы