2014-09-05 55 views
1
<script type="text/javascript"> 

     $(document).ready(function() { 

      $(".inline").colorbox({ inline: true, top: 50, left: 350, height: 400 }); 

      $(".tbllist .malzlist").mouseover(function() { 
       $(".tbllist .malzlist").css("background-color", "white"); //this function dont work 
       $(this).css("background-color", "yellow"); 

      }); 


      $(".tbllist .malzlist").dblclick(function() { //this function dont work 

       var malznumber = $(this).children().first().text(); 
       $("#txtMatnr").val(malznumber); 
       $.colorbox.close(); 

      }); 


      $('#txtMatnr').keyup(function (e) { 
       if (e.which == 13) { 

        var MalzNo = $('#txtMatnr').val(); 

        $.ajax({ 
         type: "POST", 
         url: "Default2.aspx/GetQueryInfo", 
         async: false, 
         data: "{MalzemeNo:'" + MalzNo + "'}", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function (data) { 
          var objdata = $.parseJSON(data.d); 

          $.each(objdata, function() { 
           $(".tbllist > tbody:last").append('<tr class="malzlist">'); 
           $.each(this, function (k, v) { 
            $(".tbllist tr:last").append("<td>" + v + "</td>"); 
           }); 
           $(".tbllist > tbody:last").append("</tr>"); 
          }); 
         } 
        }); 

        $(".inline").click(); 
       } 
      }); 
     }); 
    </script> 

ajax調用後我的表格行;爲什麼在用ajax調用填充表之後不工作jquery函數?

<table class="tbllist"> 
<tr class="malzlist"><td>000000000000000018</td><td>upa1</td></tr> 
<tr class="malzlist"><td>000000000000000018</td><td>upa1</td></tr> 
</table> 

當我填寫表格與Ajax調用,雙功能(我寫與評論)不工作,我覺得頁面沒有看到阿賈克斯call.When插入線我填寫表格直接用HTML(不包括Ajax調用)它的工作可以幫助我嗎?

+0

你說得對,問題在於,無論何時綁定事件,元素都不存在,因此沒有事件綁定到它們。 這通常是您應該使用「委託事件」的情況,如[jQuery doc](http://api.jquery.com/on/)中所述。 – 2014-09-05 12:12:26

回答

3

任何動態加載到頁面的內容都不會將事件偵聽器應用到它們。要解決這個問題的方法是通過將聽衆的document像這樣:

$(document).on('mouseover', '.tbllist .malzlist', function(){ 
    $(this).css("background-color", "white"); 
    $(this).css("background-color", "yellow"); 
}); 

$(document).on('dblclick', '.tbllist .malzlist', function(){ 
    var malznumber = $(this).children().first().text(); 
    $("#txtMatnr").val(malznumber); 
    $.colorbox.close(); 
}); 

與其他功能做到這一點,他們應該正常工作。以下是關於.on()方法和事件委託的深入信息。 http://api.jquery.com/on/希望這有助於!

+0

是的,它的工作,謝謝你的回答。 – 2014-09-05 12:46:20

相關問題