Browser-friendly way to simulate anchor click with jQuery?

前端 未结 4 1688
一整个雨季
一整个雨季 2021-01-01 06:32

I\'m trying to simulate a click on an anchor tag using jQuery. I\'ve been digging around StackOverflow and Google for a while and haven\'t found anything that works on all o

相关标签:
4条回答
  • 2021-01-01 06:54

    I use this approach. Seems to work okay.

    $(function() {
        fireClick($("a"));
    });
    
    function fireClick (elem) {
        window.location = $(elem).attr('href');
    }
    
    0 讨论(0)
  • 2021-01-01 06:55

    Use $('a').click();

    0 讨论(0)
  • 2021-01-01 07:13

    This should work...

    $(function() {
    
      fireClick($("a")[0]);
    
    });
    
    function fireClick(elem) {
      if(typeof elem == "string") elem = document.getElementById(objID);
      if(!elem) return;
    
      if(document.dispatchEvent) {   // W3C
        var oEvent = document.createEvent( "MouseEvents" );
        oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, elem);
        elem.dispatchEvent(oEvent);
      }
      else if(document.fireEvent) {   // IE
        elem.click();
      }    
    }
    
    0 讨论(0)
  • 2021-01-01 07:18

    I tested this in Chrome and Firefox but don't have an IE handy. This should work transparently in most scenarios.

    $('a').live('click.simclick', function(event){
        var $a = $(event.target)
        setTimeout(function(){
            if (event.isPropagationStopped())
                return
    
            $('<form/>')
                .attr({
                    method: 'get',
                    target: $a.attr('target'),
                    action: $a.attr('href')
                })
                .appendTo(document.body)
                .submit()
    
                 // clean up in case location didn't change
                .remove()
        }, 0)
    })
    
    // test it
    $('a').eq(0).click()
    
    0 讨论(0)
提交回复
热议问题