2012-03-28 32 views
1

Ich habe eine Sammlung von Links mit Thumbnails, die ihnen entsprechen. Ich muss diese Thumbnails als Divs mit dem Hintergrundbild laden. Ich benutze ein einzelnes Bild, in dem sich alle Miniaturansichten befinden, sodass ich die Bilder nicht einfach als Bilder laden kann. Durch Klicken auf das Bild sollte das gleiche tun wie den Link obwohl klicken, machte ich eine JSFiddle zu zeigen, was ich meine (und das Problem zu zeigen):einen Klick auf einen Anker Link auslösen

the JSFiddle

Wenn ich auf die beiden Links in ihm ein neuen Fenster ist geöffnet, die die Website hat, die ich will. Aber wenn ich auf die Thumbnails klicke, kann ich keinen Klick auf den Link auslösen.

Klicken auf den Link wird zusätzliche Funktionalität (Stats) haben, also ziehe ich es vor, einen Klick auf den Link über das Binden der gleichen benutzerdefinierten Funktion an die Anker und die Divs auszulösen.

Vielen Dank im Voraus

Antwort

5

Hiya Arbeiten Demo hier:http://jsfiddle.net/f6FJ3/19/

für den Trigger Grund dies lesen: jQuery: trigger click() doesn't work?

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.

Code unten wird die gewünschte Ausgabe des Fensters erhalten bekommen Öffnen Sie auf Bild klicken Sie auf.

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')); 

    }); 
});​ 

hoffe, das hilft, Prost!

7

In HTML4 wurde das Click-Ereignis nur für das Eingabeelement und einige Browser definiert, vor allem FF, strictly followed the specification. Allerdings HTML5 das Spiel verändert und jeder moderne Browser implementiert diese Funktionalität, aber jQuery hat noch einen Sonderfall für diese Veranstaltung (Auszug aus jquery trigger method):

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. 

Als Abhilfe können Sie Ihren Code aus ändern können:

target.trigger("click"); 

zu

target.get(0).click(); 
Verwandte Themen