Có cách nào để kiểm tra xem sự kiện có tồn tại trong jQuery không? Tôi đang làm việc trên một plugin sử dụng các sự kiện không gian tên tùy chỉnh và muốn kiểm tra xem sự kiện đó có được liên kết với một phần tử hay không.Kiểm tra xem sự kiện có tồn tại trên thành phần
Trả lời
$('body').click(function(){ alert('test')})
var foo = $.data($('body').get(0), 'events').click
// you can query $.data(object, 'events') and get an object back, then see what events are attached to it.
$.each(foo, function(i,o) {
alert(i) // guid of the event
alert(o) // the function definition of the event handler
});
Bạn có thể kiểm tra bằng cách cho ăn tham chiếu đối tượng (không phải là đối tượng jQuery dù) đến $ .data, và cho thức ăn chăn nuôi đối số thứ hai 'sự kiện' và điều đó sẽ trả về một đối tượng dân cư với tất cả các sự kiện như ' nhấp chuột'. Bạn có thể lặp qua đối tượng đó và xem trình xử lý sự kiện làm gì.
Tôi thực sự thích ví dụ đầu tiên của bạn tốt hơn, các sự kiện $ .data (elem, ' ') cung cấp nhiều thông tin hơn. –
tôi đã thêm rằng dưới dạng nhận xét –
Tại sao bạn không sử dụng $ ('body'). Data ('events')? – James
sử dụng jquery kiện lọc
bạn có thể sử dụng nó như thế này
$("a:Event(click)")
Hah, cảm ơn, đã xây dựng plugin đó sau khi nhận được câu trả lời của người trả lời tháng trước. –
Kể từ 1.8, plugin này không còn hoạt động –
Tôi thích điều này, đăng một plugin OP được tạo ra như một câu trả lời cho câu hỏi của mình :) – Andy
tôi đã viết một plugin gọi hasEventListener mà chính xác nào đó.
Hy vọng điều này sẽ hữu ích.
Vấn đề là, nó hoạt động như thế nào? Tôi đã ở đó trong một vài giờ, và nó vẫn chưa rõ ràng. Tôi chỉ muốn kiểm tra xem có sự kiện nhấp vào nó hay không, và lấy lại boolean, không phải là một đối tượng, nhưng hầu hết các phương pháp mà bạn cung cấp, ít nhất là các ví dụ, phức tạp hơn nhiều. Thật thú vị: http://www.codingjack.com/playground/jquick/#haseventlistener, nhưng tôi không sử dụng jquick, nhưng tôi thích sự đơn giản đơn giản đó. –
Bạn có thể sử dụng:
$("#foo").unbind('click');
để đảm bảo tất cả các sự kiện nhấp chuột là unbinded, sau đó đính kèm sự kiện của bạn
Không giúp đỡ nếu bạn đã sử dụng trực tiếp để đăng ký sự kiện. http://stackoverflow.com/questions/12755646/jquery-datatables-multiple-calls-to-event-handler-with-live-function –
Câu hỏi là kiểm tra xem sự kiện có tồn tại trên phần tử hay không và cách hủy liên kết các sự kiện hiện có ... – Avi
@Avi, nó vẫn là một câu trả lời hay, bởi vì trong nhiều trường hợp, câu hỏi được đặt ra với vấn đề trong đầu: "Làm thế nào để không đăng ký một trình xử lý hai lần?" – hans
Dưới mã sẽ cung cấp cho bạn với tất cả các sự kiện click vào chọn đưa ra:
jQuery(selector).data('events').click
Bạn có thể lặp qua nó bằng cách sử dụng từng cái hoặc ví dụ. kiểm tra độ dài để xác thực như:
jQuery(selector).data('events').click.length
Nghĩ rằng nó sẽ giúp ai đó. :)
Không hoạt động thêm trong jQuery> = 1.8. Xem câu trả lời của Tom Gerken cho một giải pháp làm việc. – jbandi
Dưới đây là làm thế nào để kiểm tra xem mọi trường hợp tồn tại cho một yếu tố
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$(function() {
$("#textDiv").click(function() {
//Event Handling
});
var events = $._data(document.getElementById('textDiv'), "events");
var hasEvents = (events != null);
});
</script>
</head>
<body>
<div id="textDiv">Text</div>
</body>
</html>
Tôi nghĩ bạn có thể đơn giản hóa điều này bằng cách sử dụng: var eventBound = (events! = Null); –
Giải pháp này hoạt động với jQuery 1.8.0 sau đó. Cảm ơn bạn rất nhiều Ton Gerken :) –
tôi đã kết thúc làm điều này
typeof ($('#mySelector').data('events').click) == "object"
Tôi đã trả lời cho câu hỏi tương tự ở đây: hasHandlers() helper
Làm việc với jQuery> = v1.11.0
Tác phẩm này dành cho tôi nó hiển thị các đối tượng và loại sự kiện đã xảy ra.
var foo = $._data($('body').get(0), 'events');
$.each(foo, function(i,o) {
console.log(i); // guide of the event
console.log(o); // the function definition of the event handler
});
- 1. Kiểm tra xem phần tử có tồn tại trong DIV
- 2. Kiểm tra xem bảng có tồn tại trên MySQL
- 3. JS Có cách nào để kiểm tra xem sự kiện có tồn tại không?
- 4. jQuery kiểm tra xem onClick có tồn tại trên phần tử
- 5. Kiểm tra xem bảng có tồn tại
- 6. Postgresql: Kiểm tra xem lược đồ có tồn tại không?
- 7. JQuery/Javascript: kiểm tra xem var có tồn tại không
- 8. Kiểm tra xem đầu vào biểu mẫu có tồn tại
- 9. jQuery: Kiểm tra xem hình ảnh có tồn tại
- 10. Kiểm tra xem các khóa/nút JSON có tồn tại
- 11. Sự kiện tồn tại của phần tử jQuery
- 12. PDO/PHP - Kiểm tra xem hàng có tồn tại
- 13. Kiểm tra xem (một phần) xem có tồn tại từ HtmlHelperMethod
- 14. Javascript: Kiểm tra xem classname tồn tại
- 15. SparseArray, kiểm tra xem key tồn tại
- 16. Kiểm tra xem trang web có tồn tại
- 17. Kiểm tra xem yếu tố tồn tại
- 18. Kiểm tra xem bảng có tồn tại trong C#
- 19. Tăng PropertyTree: kiểm tra xem con có tồn tại
- 20. Kiểm tra xem tên màu CSS có tồn tại không
- 21. Truy vấn để kiểm tra xem trình kích hoạt có tồn tại trên bảng MYSQL
- 22. Cách kiểm tra xem tài sản có tồn tại không?
- 23. Codeigniter & PHP kiểm tra xem phiên có tồn tại
- 24. Cách kiểm tra xem tệp có tồn tại từ url
- 25. kiểm tra xem hình ảnh có tồn tại không php
- 26. Express, kiểm tra xem mẫu có tồn tại
- 27. CMake kiểm tra xem tệp cục bộ có tồn tại
- 28. RavenDb kiểm tra xem chỉ mục có tồn tại
- 29. Kiểm tra xem URL có tồn tại hay không
- 30. Kiểm tra xem phương thức jQuery có tồn tại
vậy, trong 1.8, tất cả điều này là sai? –
@SkylarSaveland Method '$ .data (yếu tố," sự kiện ")' chưa bao giờ chính thức. Nhưng trong jQuery 1.8.0, phương thức này được để lại thông qua '$ ._ data (element," events ")'. đọc thêm [tại đây] (http://blog.jquery.com/2012/08/09/jquery-1-8-released/) – Anton