2013-01-24 2 views
3

jQuery v1.8.3을 사용하면서 live ('click ...을 사용합니다. 작동하지만 라이브가 v1.7에서 depracated됨을 알게되었습니다. 사용자가이 아무것도하지 않는 링크를 클릭 이제 때 ('아래는 a.view_subscriptions 링크를 클릭 할 때에만 작동 JQuery와/JSjquery 1.8.3 라이브 클릭 이벤트가 클릭으로 변경됨

의 사본이며,

을 클릭합니다.

를 어떤 도움이 감사합니다.

$(document).ready(function() { 


    function get_month() 
    { 
    var u = $("#days_for_month_url").attr("href"); 

    var form_data = { 
     ajax : '1' 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     $('#display-month').html(msg); 

     } // end success 

    }); // end ajax 

    return false; 
    } 

    get_month(); 

    $("a.view_events").on('click', function(e) { 
    e.preventDefault(); 
    var date = $(this).data('date'); 

    // change if URL changes 
    var u = $("#events_for_day_url").attr("href"); 

    var form_data = { 
     year : $(this).data('year'), 
     month : $(this).data('month'), 
     day : $(this).data('day'), 
     date : $(this).data('date'), 
     ajax : '1' 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     $('#display-events').html(msg); 
     $('#display-event_detail').html(''); 

     } // end success 

    }); // end ajax 

    return false; 

    }); // end on.click view-events 


    $("a.view_event_details").on('click', function(e) { 
    e.preventDefault(); 
    var u = $("#event_detail_url").attr("href"); 

    var form_data = { 
     event_id : $(this).data('event_id'), 
     ajax : '1' 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     $('#display-event_detail').html(msg); 
     $('#display-events').html(''); 

     } // end success 

    }); // end ajax 

    return false; 

    }); // end on.click view_event_details 


    $("a.month_link").on('click', function(e) { 
    e.preventDefault(); 
    $('#display-events').html(''); 

    var u = $("#days_for_month_url").attr("href"); 

    var form_data = { 
     month_url : $(this).data('month_url'), 
     ajax : '1' 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     $('#display-month').html(msg); 

     } // end success 

    }); // end ajax 

    return false; 

    }); // end on.click view-month 

$("a.view_subscriptions").on('click', function(e) { 
    e.preventDefault(); 
    var u = $("#subscriptions_url").attr("href"); 

    var form_data = { 
     ajax : '1' 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     $('#display-subscriptions').html(msg); 
     //$('#display-subscriptions').toggle(); 

     } // end success 

    }); // end ajax 

    return false; 

    }); // end on.click view-subscriptions 

$("#update_subscriptions").on('click', function(e) { 
    e.preventDefault(); 
    var u = $("#update_subscriptions_url").attr("href"); 

    var vals = [] 
    $('input:checkbox[name="calendar[]"]').each(function() { 
     if (this.checked) { 
      vals.push(this.value); 
     } 
    }); 

    var form_data = { 
     ajax : '1', 
     calendar: vals, 
    }; 

    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     url: u, 
     data: form_data, 
     success: function(msg) { 

     get_month(); 
     $('#display-subscriptions-update').html(msg).fadeOut(6000); 
     $('#display-subscriptions').html(''); 

     } // end success 

    }); // end ajax 

    return false; 

    }); // end on.click view-subscriptions 

}); // end document ready 
+1

(또는 더 나은, 당신은 함수를 호출하고이 a.view_events 요소를 개최 할 때 존재하는 요소에 의해 document 대체) jQuery API에는'.live()'가 더 이상 사용되지 않는다는 통지로부터 몇 단락 만 잘 문서화되어있다. –

답변

7

이것은 함수 이름의 변경 사항 만이 아닙니다. 바인딩은 즉각적이며 바인딩시 jQuery 세트의 요소에만 관련됩니다. 인수로 동적 요소의 선택자를 전달하십시오.

대신

$("a.view_events").on('click', function(e) { 

의 사용

$(document).on('click', "a.view_events", function(e) { 

변환

+0

+1 - 대개 문서를 'body'또는 문서에 바인딩하는 대신 div.container와 비슷한 것으로 바꿀 수 있습니다. – adamdehaven

관련 문제