2013-03-13 50 views
6

Tôi có mã jQuery này tôi đã viết bằng cách sử dụng chức năng nhấp chuột.Sự kiện CLICK CLICK không kích hoạt (khi chuyển sang di chuột, nó không hoạt động)

Mã phải hoạt động với jQuery 1.7.2.

Tôi đã một jsfiddle thiết lập tại đây: http://jsfiddle.net/7MpTa/1/

$(document).ready(
function() { 
    $(".balloons a").hover(
     function() { 
      $(this).next('.popups').addClass("shown"); 
     }, 
     function() { 
      $(this).next('.popups').removeClass("shown"); 
     } 
    ); 
} 

);

Khi tôi chuyển chức năng nhấp để di chuột, nó hoạt động. Nó chỉ là chức năng bấm chính nó mà không hoạt động. Tôi đã thử thay đổi nó để ràng buộc, và sống, nhưng không thành công.

Dưới đây là một bản demo của lao động di chuột: http://jsfiddle.net/8HL8k/1/

Bất kỳ ai có bất cứ ý tưởng tại sao nó không làm việc?

chỉnh sửa Cảm ơn mọi người vì câu trả lời của bạn. Họ rõ ràng là tất cả đều làm việc tuyệt vời. Tuy nhiên, khi thực hiện những thay đổi này trên trang web, các sự kiện chỉ không được kích hoạt ở tất cả (thử nghiệm trên FF, IE7 +, Chrome, Opera, Safari). Có hoàn toàn không có tài liệu tham khảo khác bất cứ nơi nào để các lớp học (bóng bay & cửa sổ bật lên), vì vậy tôi không chắc chắn những gì có thể gây ra sự can thiệp. Tôi không thể đăng liên kết tới trang web do chính sách NDA nghiêm ngặt. Tất cả đều nằm trong danh sách không có thứ tự (ul). Nó có thể được gây ra bởi cú pháp HTML này? Nếu vậy, có cách nào xung quanh nó? Bởi vì nó phải ở bên trong vì mã đang được sử dụng cho hàng trăm trình chiếu trên toàn bộ trang web.

Tôi cũng đã cố gắng đưa các neo để gửi cảnh báo khi nhấp, để xem nó có kích hoạt hay không và nó cũng không kích hoạt nó.

Kịch bản lệnh có nên được gọi trước khi tham khảo jQuery 1.7.2 bên trong phần đầu hoặc sau nó hoặc ở phần cuối của tài liệu trước thẻ không?

Trả lời

6

Bạn có thể sử dụng toggle() thay vì click():

$(".balloons a").toggle(
    function() { 
     $(this).next('.popups').addClass("shown"); 
    }, 
    function() { 
     $(this).next('.popups').removeClass("shown"); 
    } 
); 

Như bạn có thể thấy ở đây: http://jsfiddle.net/darkajax/tmzt7/

Tuy nhiên ghi nhớ toggle() bị phản đối như jQuery 1.8 và được loại bỏ trong 1.9, nhưng vì bạn đang sử dụng 1.7.2, nó sẽ hoạt động bình thường ...

Nhưng, đặt cược giải pháp ter sẽ được sử dụng toggleClass():

$(".balloons a").click(
    function() { 
     $(this).next('.popups').toggleClass("shown"); 
    } 
); 

Như bạn có thể thấy ở đây: http://jsfiddle.net/darkajax/GeSmx/

EDIT: trả lời một phần của thứ hai câu hỏi/vấn đề của bạn, tài liệu tham khảo jQuery nên trước khi tất cả các phương pháp/chức năng sử dụng nó ...

+0

Cảm ơn darkajax này, nó hoạt động rất độc đáo trên jsfiddle, tuy nhiên không phải khi triển khai trên trang web. Tôi đã cập nhật câu hỏi. Hãy cho tôi biết nếu bạn có bất kỳ suy nghĩ nào về những gì có thể là lý do tại sao kịch bản đó không được kích hoạt chút nào. Cảm ơn bạn! – Lucille

+0

Cảm ơn câu trả lời của bạn! Tôi đã đặt jQuery đầu tiên, trên dòng tiếp theo, kịch bản quảng cáo. Tuy nhiên, nó vẫn không kích hoạt/làm việc. – Lucille

+0

Đó là một sự xấu hổ bạn không thể đăng một liên kết đến trang web thực tế, đó có thể là chìa khóa để tìm ra vấn đề. Bạn đã cố gắng sử dụng một cái gì đó giống như các công cụ phát triển của Chrome hoặc Firebug của Firefox, hãy kiểm tra bảng điều khiển trong trường hợp có bất kỳ lỗi nào không? Đó thường là cách tốt để tìm ra vấn đề ... – DarkAjax

1

Sử dụng toggle() không click

Working DEMO

+0

Cảm ơn Muhammad này, nó hoạt động rất độc đáo trên jsfiddle, tuy nhiên không phải khi triển khai trên trang web. Tôi đã cập nhật câu hỏi. Hãy cho tôi biết nếu bạn có bất kỳ suy nghĩ nào về những gì có thể là lý do tại sao kịch bản đó không được kích hoạt chút nào. Cảm ơn bạn! – Lucille

3

Di chuột có chức năng bật và tắt, trong đó khi nhấp chuột chỉ mất một chức năng.

$(document).ready(function() { 
    $(".balloons a").click(function() { 
     $(this).next('.popups').toggleClass("shown"); 
    }); 
}); 

toggleClass sẽ thực hiện một bước để thêm và xóa lớp học.

+2

Đây là câu trả lời hay nhất bởi vì nó nằm ở trung tâm của vấn đề (gọi sai phương thức 'click()' và giải pháp không bị phản đối – Cfreak

+0

Cảm ơn mã này, Jake, nó hoạt động rất tốt trên jsfiddle Tuy nhiên, không phải khi triển khai trên trang web. Tôi đã cập nhật câu hỏi. Hãy cho tôi biết nếu bạn có bất kỳ suy nghĩ nào về những gì có thể là lý do tại sao kịch bản đó không được kích hoạt chút nào. Cảm ơn bạn! – Lucille

+0

hãy thử nhận xét mọi thứ có thể gây ra sự cố của bạn và chạy lại mã. Nếu mã chạy, bạn biết đâu đó trong phần nhận xét đó đang gây ra sự cố. Uncomment phần để pin điểm vấn đề. –

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