JQuery删除附加的li fom ul

时间:2013-03-05 12:36:43

标签: javascript jquery closest

我在从其父li删除列表项ul时遇到问题。通常我会做以下事情:

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

$(this).parent().remove();

由于列表项通过表单附加到页面,我认为this用法存在问题。

我追加li的代码如下:

$(document).on('click', '.add_section', function(){
var section_title=$('.section').val();
var menu_type=$('.menu_type_sel').val();
var rest_id=$('body').data('rest_id');
var menu_id=$('body').data('menu_id');
var error=false;
if(section_title=="")
{
    $('.error_box13').eq(2).html("<p>Please Add a Section Title</p>");
    $('.error_box13').eq(2).show(300);
    error=true;
    return;
}

var data="section="+section_title+"&rest_id="+rest_id+"&menu_id="+menu_id+"&menu_type="+menu_type;

$.ajax({
    type:"POST",
    url:"includes/write_section.php",
    data:data,
    success:function(html){
        if(html!="x")
        {
        var app_section="";
        app_section="<li class='hover' id='menu_"+html+"'>"+section_title+" <a href='javascript:void(0);' class='delete_section' data-id='"+html+"'>[x]</a></li>";
        $(app_section).appendTo('#sortme');
        $('.section').val("");
        }
    }
});//end ajax
});

要删除li到目前为止,我有:

 $(document).on('click', '.delete_section', function(){
var delete_id=$(this).data('id');
var data="id="+delete_id;
alert(data);
$.ajax({
    type:"POST",
    url:"includes/delete_section",
    data:data,
    context:this,
    success:function(html){
        if(html!="X")
        {
            $(this).closest('li').remove();
            return false;
        }
    }
});//end ajax
});

我已将context:位添加为试用版,但仍未删除li

2 个答案:

答案 0 :(得分:0)

尝试旧的var that = this技巧。

$(document).on('click', '.delete_section', function(){
    var delete_id=$(this).data('id');
    var data="id="+delete_id;
    var that = this;
    $.ajax({
        type:"POST",
        url:"includes/delete_section",
        data:data,
        context:this,
        success:function(html){
            if(html!="X")
            {
                $(that).closest('li').remove();
                return false;
            }
        }
    });//end ajax
});

答案 1 :(得分:0)

刚刚注意到我的愚蠢错误:

url缺少.php,因此没有返回代码。