Плагин, чтобы сделать метод "клик" кросс-браузер - PullRequest
0 голосов
/ 29 марта 2011

Я сделал этот плагин, чтобы сделать метод '[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(); 

    });

});

на основании этого вопроса

спасибо.

EDIT

Я расширил пример на основе комментариев и ответов

РЕДАКТИРОВАТЬ II

похожие вопросы:

как сделать программный щелчок по элементу в firefox
браузер дружественно путь к Simulate анкер-клик-с-JQuery

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Вы используете jQuery, но не используете метод jQuery .click() ... почему ?

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

$elements.click(); // that's it.
2 голосов
/ 30 марта 2011

Очевидно, что нажатие на ссылку в 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;
});

P.S. Идентификаторы не должны начинаться с цифры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...