2009-05-28 35 views
7

Tôi không thể kích hoạt một nhấp chuột vào thẻ nội dung sử dụng jQuery, Tôi đang sử dụng này ...kích hoạt cơ thể nhấp chuột với jQuery

$('body').click(); 

ngay cả điều này không

$('body').trigger('click'); 

Bất kỳ ý tưởng? !

+0

Có thể bạn đang kích hoạt sự kiện nhấp chuột trước khi bạn đã xác định chức năng trình bắt chuột không? cho chúng tôi thấy mã nơi bạn xử lý nhấp chuột. – duckyflip

+0

Không muốn đưa ra một cái gì đó cũ nhưng tôi đoán rằng chiều cao cơ thể mặc định của một tài liệu không giống như chiều cao khung nhìn. Vì vậy, việc sử dụng css để đặt chiều cao thành 100% sẽ khắc phục điều này, ví dụ: 'html, body {width: 100%; chiều cao: 100%; } ' –

Trả lời

9

Bạn nên có một cái gì đó như thế này:

$('body').click(function() { 
    // do something here 
}); 

Các hàm callback sẽ được gọi khi người dùng nhấp chuột ở đâu đó trên trang web. Bạn có thể kích hoạt callback lập trình với:

$('body').trigger('click'); 
+0

Tôi đã thực hiện những gì bạn đã đề cập .. Khi cá nhân tôi nhấp vào bất kỳ đâu trên trang, Trình xử lý nhấp chuột hoạt động hoàn hảo – ruturaj

+0

bạn có nghĩa là bạn đang cố gắng _fire_ sự kiện này không? thay vì kích hoạt sự kiện, tại sao không gọi hàm mà trình xử lý nhấp chuột của bạn sẽ làm? –

+1

vâng tôi đang cố gắng kích hoạt sự kiện, tôi muốn mô phỏng một cú nhấp chuột trên cơ thể. – ruturaj

4

Tôi đã sử dụng đoạn mã sau một vài lần và nó hoạt động ngọt ngào:

$("body").click(function(e){ 
    //you can then check what has been clicked 
    var target = $(e.target); 
    if (target.is("#popup")) { } 
}); // Added); this for correct syntax 
10

thú vị .. khi tôi thay

$("body").trigger("click") 

với

jQuery("body").trigger("click") 

NÓ ĐÃ LÀM VIỆC!!!

+14

chỉ ra cho tôi rằng bạn đang sử dụng các khung JavaScript khác trên trang cũng có hàm viết tắt được định nghĩa $(). –

+0

hoặc phiên bản khác của JQuery trong tập lệnh có liên quan .. Tôi đã nhận được nó khi sử dụng JQGrid khi tham chiếu .each() – KevinDeus

2

nếu tất cả mọi thứ đã được nói đã không làm việc, quay trở lại vấn đề cơ bản và kiểm tra nếu điều này đang làm việc:

<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     $('body').click(function() { 
     // do something here like: 
     alert('hey! The body click is working!!!') 
     }); 
    </script> 
    </body> 
</html> 

sau đó cho tôi biết nếu làm việc của mình hay không.

+0

hmmm ... chỉ cần lưu ý u trả lời câu hỏi của riêng bạn X). anyway u có thể làm cảnh báo ($. toString()); để cung cấp cho bạn manh mối về "plugin" khác đang can thiệp vào jQuery. – Seeker

0

Như đã đề cập bởi Seeker, vấn đề có thể là bạn đã cài đặt chức năng click() quá sớm. Từ đoạn mã của bạn, chúng tôi không thể biết vị trí bạn đã đặt tập lệnh và liệu nó có được chạy vào đúng thời điểm hay không.

Điểm quan trọng là chạy tập lệnh như vậy sau khi tài liệu sẵn sàng. Này được thực hiện bằng cách đặt click() khởi trong đó chức năng khác như trong:

jQuery(document).ready(function() 
    { 
    jQuery("body").click(function() 
     { 
     // ... your click code here ... 
     }); 
    }); 

này thường là phương pháp tốt nhất, đặc biệt là nếu bạn bao gồm mã JavaScript của bạn trong thẻ <head> của bạn. Nếu bạn đưa nó vào dưới cùng của trang, thì hàm ready() ít quan trọng hơn, nhưng nó vẫn có thể hữu ích.

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