如何从MVC View中删除整个div?

时间:2014-03-28 12:03:11

标签: javascript jquery asp.net-mvc

我正在开发MVC应用程序。

我有一个View,我在其中显示数据行。

我在该行中放置了一个删除链接,当用户点击该链接时,该行应该删除。

但它不起作用......

我以下列格式显示数据。

  $('#ProductList').append("<div  class='span12' style='margin-left:0px' ><div class='span2'>" +
                "<select class='clsProductId '  name='ProductId' id='ddProductList_" + IDD + "' style = 'font-size:12px;width:200px;margin-right:80px;margin-left:20px;' onchange='get(" + IDD + ")'/> </div>" +
                "<div id='ProductCode_" + IDD + "' class='span1'  style=' margin-left:85px;'></div>" +
                "<div id='Weight_" + IDD + "' class='span1' style=' margin-left:55px;'> </div>" +
                "<div class='span1'style='margin-left:0px;'><input type='text' id='Quantity_" + IDD + "' class='clsQuantity'  name='Quantities' style='width:50px; margin-left:0px;' onblur='StockLinkVisible(" + IDD + ");' /></div>" +
                 "<div class='span1' style='margin-left:0px;'><a href='#' style='font-size:14px;text-decoration:none;font-weight:bold; color :#ee8929; margin-left:20px;' id='lnkRemove_" + IDD + "' class='clsRemove'  onclick='removeElement(" + IDD + ");'>X</a></div>" +
                 "<div class='span1'style='margin-left:10px; Width:60px;'  id='Bandra_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:10px; Width:60px;'  id='Dadar_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:0px; Width:60px;'    id='Bhivandi_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:10px; Width:40px;'  id='Juhu_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:10px; Width:40px;'  id='Kurla_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:10px; Width:60px;'  id='Dombivali_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:15px; Width:40px;'  id='Worli_" + IDD + "'>123</div>" +
                "<div class='span1'style='margin-left:15px; Width:60px;'  id='Sant_" + IDD + "'>123</div>" +
                 "<div class='span1'style='margin-left:0px; Width:40px;'  id='Bandra_" + IDD + "'>123</div>" +


                "<hr></div>");

删除我写下面代码的行...

   function removeElement(cnt)
    {

        $("#ProductList").on('click', '#lnkRemove_'+cnt, function () {
            $(this).closest("div").remove(); 
        });
    }

请查看下面的图片,以便更好地了解... enter image description here

3 个答案:

答案 0 :(得分:1)

在点击事件中,您调用一个函数

onclick='removeElement(" + IDD + ");

此函数将另一个单击处理程序绑定到自身,但实际上并没有执行任何操作。此外,单击处理程序将查找最接近的div,它只包含删除按钮,因此不能完全按照您的意愿执行。

 $("#ProductList").on('click', '#lnkRemove_'+cnt, function () {
     $(this).closest("div").remove(); 
 });

这是我的建议:删除onclick事件和函数,并在文档就绪时,注册一般的点击操作,如下所示:

$('#ProductList').on('click', '.clsRemove', function() { 
    $(this).closest('div.span12').remove();
});

我选择了类span12作为选择器,因为它是我看到的唯一一个顶层包装div(“行”)。您可以随意添加更具描述性的选择器并使用它。

答案 1 :(得分:1)

您无需为每个元素调用removeElement。只需在document.ready

中配置以下代码即可
$(document).ready(function(){
 $("#ProductList").on('click', '.clsRemove', function () {
        $(this).parents("div.span12:first").remove();
 });
});

答案 2 :(得分:0)

更新到:

function removeElement(cnt)
{
   $('#lnkRemove_'+cnt).closest("div.span12").remove(); 
}

您不需要再次绑定click事件,而是可以按照建议或更好的方式将事件委托给最近的静态父(尝试不引人注目的js)

$("#ProductList").on('click', '[id^="lnkRemove"]', function () {
    $(this).closest("div.span12").remove(); 
});