2014-03-14 3 views
-1

Я разрабатываю приложение ASP.NET MVC.Не удается удалить div, добавив время выполнения, добавив другой div в MVC-представление

Я добавляю время прогона Div, щелкнув событие в представлении с помощью JQuery.

enter image description here

После добавления DIV, я стараюсь, чтобы удалить его ... но это не может получить удалено. Я поставил окно предупреждения на функцию щелчка ссылки удаления, но это также не работает.

enter image description here

вот мой полный код ....

<script type="text/javascript"> 


     $(document).ready(function() { 

      $('.remove').click(function() { 
       alert("asd"); 
       $(this).parent().parent().remove(); 


      }); 





     function getProductList(rIndex) { 


      //alert("In Product list"); 
      var productList; 
      var mainList; 
      var productListArray = []; 


      $.ajax({ 
       url: '@Url.Content("~/Product/GetProductList")', 
       success: function(data) { 


        mainList = data; 
        var options = ''; 
        temp = 0; 
        for (var index = 0; index < data.length; index++) { 

         productListArray[index] = data[index].Id; 
         options += '<option value="' + data[index].Id + '">' + data[index].Name + '</option>'; 
        } 
        productList = options; 

        $("select#ddProductList_" + rIndex).html(productList); 
       } 
      }); 
     } 





     $('#lnkAddProduct').click(function() { 

      var rIndex = $("select.clsProductId").length; 

      // $('#ProductList').append("<div><span style='font-size:12px;'><select class='clsProductId' id='ddProductList_" + rIndex + "' name='ProductId' style = 'font-size:12px;width:120px;margin-right:10px;margin-left:0px;' /></span><input type='text' id='SectionCode' style='width:10%; margin-right:30px;'></div>"); 
      $('#ProductList').append("<div><span style='font-size:12px;'><select class='clsProductId' name='ProductId' id='ddProductList_" + rIndex + "'name='ProductId' style = 'font-size:12px;width:150px;margin-right:10px;margin-left:0px;' /></span><input type='text' id='SectionCode' name='SectionCode' style='width:10%; margin-left:7px;'><input type='text' id='Size' name='Size' style='width:5%; margin-left:20px;'><input type='text' id='Length' name='Length' style='width:8%; margin-left:25px;'><input type='text' name='Thickness' id='Thickness' style='width:8%; margin-left:25px;'><input type='text' id='Weight' name='Weight' style='width:8%; margin-left:25px;'/><input type='text' id='Quantity' name='Quantity' style='width:8%; margin-left:30px;'/><span style='margin-left:10px;padding-top:6px;'> <a href='#' style='font-size:14px;text-decoration:none;font-weight:bold;' id='lnkRemove' class='clsRemove remove'>X</a></span></div>"); 


      getProductList(rIndex); 
     }); 

     getProductList(0); 
    }); 

</script> 
<html> 
    <body> 


      <div class="span11 " style="margin-bottom : 20px; "> 
        <div class="row-fluid"> 
        <div class="span1" style="margin-left:10px; width:100px;"> 
         Section Name 
        </div> 
        <div class="span1" style="margin-left:60px;width:120px;"> 
         Section Code 
        </div> 
        <div class="span1" style="margin-left:10px;width:60px;"> 
         Size 
        </div> 

        <div class="span1" style="margin-left:20px;width:80px;"> 
         Length 
        </div> 

        <div class="span1" style="margin-left:20px;width:80px;"> 
        Thickness 
        </div> 
         <div class="span1" style="margin-left:20px;width:90px;"> 
        Avg. Weight 
        </div> 
        <div class="span1" style="margin-left:35px;width:80px;"> 
        Quantity 
        </div> 
       </div> 

      <div class="row-fluid" id="ProductList"> 


         @*<input type="text" id="SectionName" style="width:10%; margin-right:40px;" />*@ 
          <span style='font-size: 12px;margin-left:0px;'><select class='clsProductId span11' id='ddProductList_0' name='ProductId' style='font-size:12px;width:150px;margin-right:3px;margin-left:0px;'> 
          <option selected="selected" value=""></option> 
          </select></span> 



         <input type="text" id="SectionCode" name="SectionCode" style="width:10%; margin-left:10px;" /> 


         <input type="text" id="Size" name="Size" style="width:5%; margin-left:20px;" /> 



         <input type="text" id="Length" name="Length" style="width:8%; margin-left:20px;" /> 


         <input type="text" id="Thickness" name="Thickness" style="width:8%; margin-left:20px;" /> 


         <input type="text" id="Weight" name="Weight" style="width:8%; margin-left:20px;" /> 


          <input type="text" id="Quantity" name="Quantity" style="width:8%; margin-left:30px;" /> 
         @* <span style="margin-left:10px;padding-top:6px;"> <a href='#' style='font-size:14px;text-decoration:none;font-weight:bold;' id='lnkRemove' class='clsRemove remove'>X</a></span> 

         <a href='#' class='123'>X</a> 

      <div class="span10" style="margin-left:0px;"> 
        <a href="#" id="lnkAddProduct" style="font-size:14px;text-decoration:none;margin-right:10px;">Add Product</a> 
        <span id="LinkErrorMsg" class="field-validation-error"></span> 
       </div> 
      </div> 
     </body> 
</html> 
+0

вам необходимо делегировать нажмите событие ближайшего статического контейнера. Вы должны найти сотни (тысяч?) Дубликатов вашего вопроса ... Пожалуйста, прочитайте: https://learn.jquery.com/events/event-delegation/ –

+0

избегайте этого parent(). Parent(). он может легко поступить неправильно, как только вы реорганизуете или пересмотрите свой пользовательский интерфейс. 1. Назначьте уникальный правильный идентификатор вашему div. 2. Назначьте атрибут (x), который является идентификатором div. 3. Нажмите на атрибут read click, найдите div и удалите его. – Tigran

+0

Зачем использовать делегат? почему он не работает с моим кодом, я использовал тот же код в других модулях в одном проекте, и он отлично работает. – bnil

ответ

2

Try событие делегации с помощью .on(), как ваша ссылка удалить создается среда выполнения.

$("#ProductList").on('click','.remove',function() { 
     alert("asd"); 
     $(this).closest("div.row-fluid").remove(); // Avoid parent().parent() you can use .closest() 
    }); 

исх:

.closest() API docs

+0

Он работает, но его удаляет все строки .... Если я добавил 4 строки ... и если я нажмите на любую кнопку удаления, а затем удалите все строки ... и почему он не работает с моим кодом, я использовал тот же код в других проектах ... – bnil

+0

@ user1650894 Тогда вы можете изменить селектор как этот '$ (this) .closest ("DIV"). удалить() '. Он должен работать сейчас –

+0

Спасибо большое @Dhaval Marthak, это работает ... но все же мне интересно, почему мой код не работал ... – bnil