javascript
  • jquery
  • 2015-01-06 83 views 1 likes 
    1
     $(function() { 
    
          $.getJSON("companies.json", function(response) { 
    
           var html = '<table id="tbl">'; 
           response.businesses.forEach(function(row) { 
            html += '<tr><td><a href="#" class="move" idname="' + row.id + '">' + row.id + '</a></td><td>' + row.name; 
           }); 
           html += '</table>'; 
    
           $("#tabledata").html(html); 
          }); 
    
    
          $(".move").click(function() { 
    
           var $id = $(this).attr("idname"); 
    
           $.getJSON("companies.json", function(response) { 
    
    
            $.map(response.businesses, function(obj) { 
             if (obj.id == $id) 
              console.log(obj); 
             return obj; // or return obj.name, whatever. 
            }); 
           }); 
          }); 
         }); 
    

    HTML不觸發?A HREF點擊jQuery的

    +0

    你能否提供HTML以及 –

    +0

    你試過''('。move')。on('click',function(){})' –

    +0

    可能重複[Event binding on dynamic created elements?] (http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – JJJ

    回答

    2

    當你的.move元素被添加到您的網頁動態,你必須充分利用jQuery's on() method委託事件的.move元件,它確實存在,當你的JavaScript首次加載的祖先。

    $(document).on('click', '.move', function() { ... }); 
    

    事件代表團允許我們附加一個單一的事件偵聽器,以父元素,將火了選擇匹配的所有後代,無論是現在存在的或將來添加這些後代。

    你可以閱讀更多關於jQuery的事件代表團here

    2

    如果您使用事件委託,您的問題就會消失(並且您的應用程序變得性能更高,並且不易發生內存泄漏)。

    // Only do this once, when your page loads... 
    $(document.body).on('click', '.move', function (ev) { 
        // This is the link that was clicked. 
        var $targ = $(ev.target); 
    }); 
    
    0

    嘗試這個

    $('#tabledata').on('click', '.move', function(e) { ... }); 
    
    0

    之所以沒有被觸發事件是因爲事件只添加到頁面上存在的,當你調用.click()方法元素。

    相反,你可以使用事件委派:

    $(document.body).on('click', '.move', function (ev) { 
        var $targ = $(ev.target); 
    }); 
    

    這確實說:調用函數時匹配.move這裏麪點擊document.body任何元素。

    我知道其他人已經說過了,但我想讓事件代表更清楚。

    相關問題