2010-01-13 47 views
14

Tôi có một mô phỏng nhấp chuột liên kết đơn giản mà tôi muốn thực hiện bằng cách sử dụng jQuery. Từ những gì tôi đọc, điều này sẽ hoạt động, nhưng mã bên dưới không hoạt động. Không có gì xảy ra nếu tôi làm điều tương tự như một phần của một số sự kiện khác hoặc một cái gì đó. Suy nghĩ?bấm jquery không hoạt động trên siêu liên kết

<script type="text/javascript"> 
    $(function() { 
    $("#lnk_0").click(); 
    }); 
</script> 

<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a> 

Trả lời

23

Xem click():

Kích hoạt sự kiện click của mỗi yếu tố phù hợp .

Gây ra tất cả các chức năng có bị ràng buộc với sự kiện nhấp chuột đó là được thực thi.

Điều quan trọng cần lưu ý là nó không sao chép liên kết. Nó chỉ kích hoạt các sự kiện liên quan. Nếu bạn muốn thay đổi vị trí:

var link = $("#link_0"); 
link.click(); 
window.location.href = link.attr("href"); 

nhưng ngay cả điều đó chỉ xấp xỉ vì nó không phục vụ cho các trình xử lý ngừng truyền sự kiện.

+1

rồi, cảm ơn để làm rõ rằng. Tôi đã thực sự dành thời gian nhìn chằm chằm vào tài liệu chính xác đó. Tôi nghĩ rằng điều hướng đến vị trí mới đủ điều kiện là "sự kiện được liên kết". Tôi đoán, về mặt kỹ thuật, nó không? :/ Tôi sẽ chấp nhận câu trả lời này, nhưng đầu vào của SLaks bên dưới cũng rất hữu ích. Hãy để nó đứng như câu trả lời cho các lập trình viên một lần và mãi mãi! $ ("# my_hyperlink"). click() sẽ không khiến trình duyệt điều hướng! – Sean

7

Gọi phương thức click của jQuery sẽ gọi mọi trình xử lý click mà bạn đã thêm, nhưng sẽ không nhấp vào liên kết.

Bạn cần phải viết:

window.location = $("#lnk_0").attr('href'); 

(này giả định rằng không có bất kỳ xử lý click sự kiện)


EDIT: Đáp lại bình luận của bạn, bạn có thể gọi tức là- chỉ có phương thức DOM click, như sau:

if ($("#lnk_0")[0].click) 
    $("#lnk_0")[0].click(); 
else 
    window.location = $("#lnk_0").attr('href'); 
+0

SLaks, cảm ơn vì giải pháp của bạn. Chỉ có vấn đề là nó có tác dụng phụ thực sự khó chịu của việc mất tiêu đề URL Referer trong IE, đó là những gì tôi đang cố gắng để ngăn chặn. – Sean

-1

Tôi không chắc nó giải quyết được p của bạn vấn đề recise, nhưng đây là một đoạn mã tôi sử dụng để mô phỏng người dùng nhấp chuột:

var target = "..."; 

var e = jQuery.Event("click"); 

target.trigger(e); 

if (!e.isDefaultPrevented() && target.attr("href")) 
    window.location.href = target.attr('href'); 
4

Để cho phép các chức năng siêu liên kết (di chuột, tay trỏ, vv) khi trọng với jQuery bạn có thể làm như sau:

<script> 
    $(function() { 
     $("#dialog-modal").dialog({ 
      autoOpen: false, 
      height: 320, 
      modal: true 
     }); 

     $("#open-modal").click(function() { 
      $("#dialog-modal").dialog("open"); 
     });   
</script> 
<a href="javascript:return true" id="open-modal">Open Modal</a> 

<div id="dialog-modal" title="Hello World"> 
Hello 
</div> 
Các vấn đề liên quan