2014-05-16 66 views
0

工作我有使用jQuery新創建的元素的問題我的小腳本是在這裏:jQuery選擇不添加上標籤

$('.view_button').click(function(){ 

    $.ajax({ 
     url: '/devices/view_ajax', 
     cache: false, 
     type: 'post', 
     dataType: 'JSON', 
     data: {id: $(this).attr('data')}, 
     success: function(data){ 
      var maskHeight = $(window).height(); 
      var maskWidth = $(window).width() - 100; 
      var body = $('#devices_wrapper'); 
      var div_outside = $('<div/>', {id:'wrapper'}).appendTo(body); 
      div_element = $('<div/>', {id:'popup'}).appendTo(div_outside); 
      div_element.css({position: 'relative', bottom: 0, 'z-index': 10000}); 
      $.each(data, function(i,v){ 
       if(v && i){ 
        div_wrapper = $('<div/>', {'class': 'part'}).appendTo(div_element); 
        div = document.createElement('div'); 
        span = document.createElement('span'); 
        $(span).html(i).appendTo(div_wrapper); 
        $(div).html(v).appendTo(div_wrapper); 
       } 
      }); 
      close_button = $('<div/>', {'class':'close_popup', text: 'X'}).appendTo(div_wrapper); 

     }, 
     error: function(data){ 
      alert('error'); 
     } 
    }) 
}); 

$('.close_popup').click(function(){ 
    $('#wrapper').remove(); 
}) 

當我執行上close_popup沒有點擊,我認爲它的原因是那tag > close_popup是不是被jQuery選擇器看到的,如果是的話如何添加它?或者,也許有不同的我的錯誤

回答

1

您需要使用event delegation附加事件動態添加到DOM的元素:

$(document.body).on('click','.close_popup',function(){ 
    $('#wrapper').remove(); 
}) 
+0

作品,謝謝:D – Viszman

1

使用delegeateon綁定動態創建的元素事件。

$(document).delegate('.close_popup','click',function(){ 
    $('#wrapper').remove(); 
}); 

OR

$(document).on('.close_popup','click',function(){ 
    $('#wrapper').remove(); 
}); 

但它始終是更好地使用.on

1
Try select immediate parent which static on your html dom 


$("#devices_wrapper").on("click",".close_popup",function(){ 

      $('#wrapper').remove(); 
    });