2013-03-22 42 views
8

Tôi gặp vấn đề với jquery 1.9.1. Tôi đã tìm kiếm nó nhưng những điều này không giải quyết được vấn đề của tôi.

$('.sm2_expander').live('click', function() { 
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    return false; 
}); 

Mọi người đều nói rằng "sử dụng 'trên' chức năng" nhưng lần này mã của tôi không bao giờ hoạt động.

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); 

Edit: Đây là trang prject sử dụng của tôi: draggable link

+2

Phiên bản 'on' của' $ (". Sm2_expander"). ("Click", func) 'là' $ (tài liệu) .on ("click", ". Sm2_expander", func) '. Không biết nơi bạn có '" a.offsite "'. –

+2

bạn có thể chia sẻ html cũng –

+0

cần thêm thông tin. Có lẽ sử dụng http://jsfiddle.net để giải thích vấn đề. – prasann

Trả lời

14

Trong ví dụ của bạn, bạn đã sử dụng bộ chọn a.offsite nhưng có không có yếu tố nào khớp với bộ chọn này trong bạn trang r. Đó có thể là lý do tại sao nó không hoạt động.

$(function(){ 
    $(document).on('click', '.sm2_expander', function(){ 
     alert('bye'); 
     $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    }) 
}) 

Tôi nghĩ rằng bạn có thể rút ngắn này để

$(function(){ 
    $(document).on('click', '.sm2_expander', function(){ 
     $(this).closest('li').toggleClass('sm2_liOpen sm2_liClosed'); 
    }) 
}) 
+0

Cảm ơn bạn. Đó là giải pháp của tôi. –

2

Hãy thử thay thế live với on trong mã của bạn.

$('.sm2_expander').on('click', function() { 
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    return false; 
}); 
+0

Cảm ơn bạn đã trả lời nhưng nó không hoạt động. Trang ví dụ là: http: // boagworld.com/demos/sitemap/ –

6

Hãy thử điều này: -http://jsfiddle.net/trdb9/

JS: -

$(document).on("click", "a.offsite", function() { 
    alert("Goodbye!"); 
}); 

HTML: -

<a class="offsite">Click Me</a> 
+0

Cảm ơn bạn đã trả lời nhưng nó không hoạt động. Trang ví dụ là: boagworld.com/demos/sitemap –

+0

Trang demo của bạn đang sử dụng jQuery phiên bản 1.3 –

+0

Cảm ơn Anh Mã của bạn làm việc cho tôi – sachinM

3

Bạn cần phải sử dụng jquery-migrate-1.1.1.min.js hoặc cao hơn. Tôi đoán có những thay đổi lớn sắp tới trong số jquery, một người đang làm cho mọi người dựa vào số .live để tìm những cách mới.

Dù sao đi nữa, hãy thử điều đó và nó sẽ hoạt động.

7

.live() đã được giới thiệu trong jQuery 1.3, do đó nó sẽ không hoạt động với các phiên bản trước đó.

.live() cũng đã không được chấp nhận trong jQuery 1.7 trở đi.

Các phương án được .Trên() và .delegate()

Xem câu hỏi liên quan jQuery 1.9 .live() không phải là một chức năng về cách di chuyển mã hiện.

Tôi đã sử dụng "jquery-1.8.3.min.js" và sự cố của tôi đã được giải quyết.

Các vấn đề liên quan