开发者

jquery click doesn't work on hyperlink

I have a simple lin开发者_如何学编程k click simulation that I want to do using jQuery. From what I read, this should work, but the code below doesn't work. Nothing happens if I do the same thing as a part of some other event or something either. Thoughts?

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

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


See click():

Triggers the click event of each matched element.

Causes all of the functions that have been bound to that click event to be executed.

The important thing to note is that it does not duplicate clicking the link. It only triggers associated events. If you want to change location:

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

but even that is only an approximation as it doesn't cater for handlers stopping event propagation.


Calling jQuery's click method will invoke any click handlers that you've added, but will not click the link.

You need to write:

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

(This assumes that there aren't any click event handlers)


EDIT: In response to your comment, you can call the IE-only DOM click method, like this:

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


To allow the hyperlink functionality (hover, hand cursor, etc) when overriding with jQuery you can do the following:

<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>


Doing this works:

$('#lnk_0')[0].click();


Just use

document.getElementById('#lnk_0').click();

or

$("#lnk_0")[0].click();


I am not sure it solves your precise problem, but here is a snippet of code I use to simulate a user click:

var target = "...";

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

target.trigger(e);

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜