вызвать щелчок по ссылке привязки - PullRequest
1 голос
/ 28 марта 2012

У меня есть коллекция ссылок с миниатюрами, которые соответствуют им.Мне нужно загрузить эти миниатюры как div с установленным на них фоновым изображением.Я использую одно изображение, в котором есть все миниатюры, поэтому я не могу просто загрузить изображения как изображения.Нажав на изображение, вы должны сделать то же самое, что и щелкнуть ссылку. Я сделал JSFiddle, чтобы показать, что я имею в виду (и показать проблему):

JSFiddle

Когда я нажимаю на две ссылки там, открывается новое окно, в котором есть сайт, который я хочу.Но когда я нажимаю на миниатюры, я не могу получить щелчок по сработавшей ссылке.

Нажатие на ссылку будет иметь дополнительную функциональность (статистику), поэтому я предпочитаю инициировать щелчок по ссылке, а не привязывать одну и ту же пользовательскую функцию к якорям и элементам div.

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 28 марта 2012

В HTML4 событие click было определено только для элемента ввода, и некоторые браузеры, особенно FF, строго следовали спецификации .Однако HTML5 игра изменилась, и любой современный браузер реализует эту функциональность, , но jQuery по-прежнему имеет особый случай для этого события (извлечение из метода запуска jquery ):

if ( !onlyHandlers && !event.isDefaultPrevented() ) {

    if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {

    // Call a native DOM method on the target with the same name name as the event.

В качестве обходного пути вы можете изменить свой код с:

target.trigger("click");

на

target.get(0).click();
5 голосов
/ 28 марта 2012

Hiya Рабочая демонстрация здесь: http://jsfiddle.net/f6FJ3/19/

по причине триггера прочитайте это: jQuery: триггер click () не работает?

It's important to clarify that doing jQuery('#open').click() does not execute the href attribute of an anchor tag so you will not be redirected. It executes the onclick event for #open which is not defined.

ниже кода получит желаемый результат открытия окна при щелчке изображения.

JQuery Code

$(document).ready(function(){
    $('.tmb').click(function(){
        var target=$(this).parent().find("a");

        $("#debug").text("clicked "+target.text());
        //target.triggerHandler('click');
        window.open(target.attr('href'));

    });
});​

Надеюсь, это поможет, ура!

...