2012-03-12 33 views
9

Tôi có một div với class="tags" với một siêu liên kết được xác định trước.

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

Và tôi có chức năng xóa liên kết đó nếu người dùng nhấp vào liên kết đó.

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

Và điều này làm việc với siêu liên kết được xác định trước. Nếu tôi thêm một mối liên hệ với sự giúp đỡ của jQuery (sau khi trang web được tải)

$('.tags').append('<a href="#">newLink</a>'); 

Chức năng để loại bỏ siêu liên kết (trên nhấp chuột) sẽ không được gọi bằng các, thêm liên kết. Làm thế nào để giải quyết điều này?

Trả lời

4

Bạn phải sử dụng trực tiếp chức năng:

$(".tags a").live("click", function() { 
    // ... 
}); 

Bởi vì bạn đang thêm các liên kết sau khi tải ban đầu, sự kiện nhấp chuột tiêu chuẩn sẽ không được binded đến các liên kết thêm năng động.

+19

** Lưu ý ** rằng ['live()'] (http://api.jquery.com/live) đã bị khấu hao từ 1.7. Bạn nên sử dụng ['on()'] (http://api.jquery.com/on) kể từ bây giờ. Cuộc gọi được dịch sẽ là '$ (tài liệu) .on ('click', '.tags a', function() {/ * foo * /}); ' – Matt

+0

Cảm ơn. Tôi có nên sử dụng nó trên tất cả các nhấp chuột/hành động tương tự hoặc chỉ khi thực sự cần thiết không? – svenkapudija

+1

Để biết hiệu suất, hãy xem câu trả lời này: http://stackoverflow.com/questions/6047193/liveclick-and-performance Cá nhân tôi thích sử dụng sự kiện nhấp và chỉ sử dụng sự kiện trực tiếp nếu tôi thực sự cần nó, vì nó là rõ ràng rằng sẽ có các yếu tố năng động được thêm vào. – kufi

0

Sự kiện nhấp chuột của bạn chỉ được đính kèm với phần tử hiện tại không vào phần tử tương lai.Nếu bạn muốn thêm sự kiện này vào tất cả yếu tố bao gồm trong tương lai thì bạn phải sử dụng sự kiện trực tiếp trong jquery. http://jsfiddle.net/6cGvt/

+5

** Lưu ý ** rằng ['live()'] (http://api.jquery.com/live) đã bị khấu hao từ 1.7. Bạn nên sử dụng ['on()'] (http://api.jquery.com/on) kể từ bây giờ. Cuộc gọi được dịch sẽ là '$ (tài liệu) .on ('click', '.tags a', function() {/ * foo * /});' – Matt

+0

Yup, ... Đối với phiên bản mới nhất trong jquery .you có để sử dụng phương thức ON – sandeep

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