2 Stimmen

Jquery, wenn ich auf ein Bild klicke, verhält es sich wie ein Link (auslösender Link)

Ich habe ein Problem, ich habe einige li, in ihnen habe ich einen Link und ein Bild. Was ich will, ist, wenn jemand auf das Bild klickt es den Link auslöst. Ich kann das Bild nicht in einen Link setzen, fragen Sie nicht warum :)... Also im Grunde sieht es ungefähr so aus

<li><a href="somelink">sometext</a><img src=""/></li>
<li><a href="somelink">sometext</a><img src=""/></li>
...

Und ich habe daran gedacht, so etwas zu tun:

$(img).click(function(){
  var link = $(this).prev;
  $(link).trigger('click');
})

Ich weiß, dass dies nicht korrekt ist, aber ich denke, Sie haben das Bild verstanden, danke für Ihre Hilfe.

4voto

Rob W Punkte 327048

Verwenden Sie kein jQuery, sondern verschieben Sie einfach die schließende </a> Tag auf der rechten Seite der <img> Tag:

<li><a href="somelink">sometext<img src=""/></a></li>
<li><a href="somelink">sometext<img src=""/></a></li>

Wenn Sie den HTML-Code nicht ändern wollen, verwenden Sie:

$('img').click(function(){
    location.href = $(this).prev().attr("href");
});

Code-Überprüfung

  • $(img) - img ist nicht definiert. Haben Sie gemeint: $('img') ? (Anführungszeichen hinzugefügt, mit Selektor img )
  • var link = $(this).prev; - prev ist keine Eigenschaft, sondern eine Methode. Sie muss aufgerufen werden: var link = $(this).prev()
  • $(link).trigger('click') . Desde link bereits ein jQuery-Objekt ist, ist es nicht notwendig, das Objekt in ein anderes jQuery-Objekt zu verpacken. Verwenden: link.trigger('click');
  • Fehlerhafte Logik: .trigger('click') wird nicht dazu führen, dass die Seite verfolgt wird, da es nicht das Standardverhalten des Browsers (dem Link folgen) auslöst, sondern die click Ereignis des Elements. Das nicht definiert ist.

0voto

Sieht so aus, als sollte das funktionieren. Beachten Sie nur, dass prev eine Funktion ist.

Alternativ können Sie auch etwas wie folgt tun

window.location = link.attr('href');

0voto

Sie können wahrscheinlich mit etwas wie

$(img).click(function()
{   
      var link = $(this).prev();   
      window.location.href = link.attr('href'); 
});

0voto

Orry Punkte 2458

Sie können eine CSS-Klasse sowohl für den Ankerlink als auch für das Bild festlegen und einen Klassennamen-Selektor verwenden, um das Klick-Ereignis zu aktivieren

$(".myclass").click(function(){ //Do Stuff })

0voto

jbabey Punkte 44325
$('img').live('click', function () {
    $(this).closest('a').click();
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X