【问题标题】:plugin to make the method "click" cross-browser使方法“单击”跨浏览器的插件
【发布时间】:2011-07-25 12:57:43
【问题描述】:

我制作这个插件是为了让方法“[0].click()”跨浏览器,但我不能在 Firefox 中工作,我在 Firefox 中的当前版本是 3 .6。 16. 其他浏览器(Opera / Chrome / Safari / IE)运行良好。

HTML:

<a href="#" id="myanchor">z</a>

<ul>
   <li id="1">1</li>
   <li id="2">2</li>
   <li id="3">3</li>
</ul>

Javascript:

jQuery.fn.runClick = function () {

    var element = jQuery(this).get(0);

    if (jQuery.browser.msie) { // IE
        element.click();
    }
    else {

        //var evt = document.createEvent("HTMLEvents");
        //evt.initEvent('click', true, true);

        var evt = element.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

        element.dispatchEvent(evt);

    }

    return this;
};

jQuery(function() {

    jQuery('li').bind('click', function(event) {

        var 
            key = jQuery(this).attr('id');

        jQuery('#myanchor').attr('href', 'www.mydomaind.com/x/?id=' + key).runClick(); 

    });

});

based on this question

谢谢。

编辑

我根据 cmets 和响应扩展了一个示例

编辑二

类似的问题:

how-do-i-programmatically-click-on-an-element-in-firefox
browser-friendly-way-to-simulate-anchor-click-with-jquery

【问题讨论】:

  • 我错过了什么吗? jQuery '.click' 功能已经是跨浏览器了。 IE。 $('#yourElement').click(function() {}) 已经可以跨浏览器工作了。
  • 所以.trigger('click') 不起作用?
  • 请看示例,我在主播上有一个事件,我必须运行'href' current
  • 不要忽视这个问题:它比看起来更棘手。据我了解,问题在于 Firefox 确实响应了 &lt;a&gt; 标签上的 onclick 事件,但它并没有按预期更改文档位置。 jQuery 并没有改变这个事实。

标签: javascript jquery events firefox


【解决方案1】:

你使用 jQuery,但没有使用 jQuery 的 .click() 方法...为什么

var $elements = $('some-jquery-selector');

$elements.click(); // that's it.

【讨论】:

  • 请看示例,我在主播上有一个事件,我必须运行'href' current
【解决方案2】:

显然,在 Firefox 中单击链接不会触发它:

jQuery('#myanchor').click(function(){
    alert("I was clicked, but I'll do nothing about it");
});
jQuery("li").click(function(){
    var key = jQuery(this).attr('id');
    jQuery('#myanchor').attr("href", "http://www.mydomaind.com/x/?id=" + key).click();
});

我看不到您的大局,因此您可能有正当理由这样做。但是如果这一切的唯一目的是去另一个页面,那就直接去做吧:

jQuery("li").click(function(){
    top.location.href = "http://www.mydomaind.com/x/?id=" + this.id;
});

附: ID 不应以数字开头。

【讨论】:

  • 在 HTML5 中,ID 可以以数字开头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2016-02-04
  • 2012-11-23
相关资源
最近更新 更多