JQuery wanneer ik op img klik gedraagt ​​het zich als een link (triggering link)

ik heb een probleem, ik heb wat meer, daarbinnen heb ik een link en een afbeelding. Wat ik wil is wanneer iemand op de afbeelding klikt die de link activeert. Ik kan de afbeelding niet in een link plaatsen, vraag niet waarom:) ... Dus eigenlijk ziet het er ongeveer zo uit

  • sometext
  • 
    
  • sometext
  • ...
    

    En ik dacht erover om zoiets als dit te doen:

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

    Ik weet dat dit niet klopt, maar ik denk dat je de foto hebt gemaakt, bedankt voor je hulp.

    2
    Waarom kan je de afbeelding niet in de link plaatsen?
    toegevoegd de auteur SliverNinja - MSFT, de bron
    Val altijd aannames aan - als niets anders de motieven deelt.
    toegevoegd de auteur SliverNinja - MSFT, de bron
    Quote van het OP: ". Ik kan de afbeelding niet in een link plaatsen, niet vragen waarom :)."
    toegevoegd de auteur Nettogrof, de bron

    5 antwoord

    Don't use jQuery, but simply move the closing tag at the right side of the tag:

  • sometext
  • 
    
  • sometext
  • 
    

    Als u de HTML niet wilt wijzigen, gebruikt u:

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

    Code review

    • $(img) - img is not defined. Did you mean: $('img')? (added quotes, using selector img)
    • var link = $(this).prev; - prev is nto a property, but a method. It has to be invoked: var link = $(this).prev()
    • $(link).trigger('click'). Since link is a jQuery object already, it's unnecessary to wrap the object in another jQuery object. Use: link.trigger('click');
    • Flawed logic: .trigger('click') will not cause the page to be followed, because it doesn't trigger the default browser behaviour (following the link), but invokes the click event of the element. Which is not defined.
    4
    toegevoegd
    @ Mr.Sam Het is het tweede codeblok bij mijn antwoord. Het standaardgedrag van het klikken op een link is het wijzigen van de locatie, die wordt bereikt met (bijv.) location.href = "http://newurl";
    toegevoegd de auteur Rob W, de bron
    @ Mr.Sam De link triggeren == de pagina omleiden. Zelfs als de link een boekenmarkt ( javscript: .. ) of gewoon een hash ( #notleaving ) bevat, zal de pagina niet omleiden en zal de link worden gevolgd, zoals als u een link volgt.
    toegevoegd de auteur Rob W, de bron
    ja, oké uw recht, maar hoe kan ik de klik op de link simuleren door op de afbeelding te klikken?
    toegevoegd de auteur Mr. Sam, de bron
    bedankt maar ik was op zoek naar iets dat niet alleen de pagina omleidt maar de link activeert ... maar toch bedankt
    toegevoegd de auteur Mr. Sam, de bron

    Je kunt waarschijnlijk wegkomen met zoiets

    $(img).click(function()
    {   
          var link = $(this).prev();   
          window.location.href = link.attr('href'); 
    });
    
    0
    toegevoegd
    $('img').live('click', function() {
        $(this).closest('a').click();
    });
    
    0
    toegevoegd
    je zou een antwoord moeten accepteren als het je vraag beantwoordt :)
    toegevoegd de auteur jbabey, de bron
    Wouw ik moet je vertellen dat dit precies is waar ik naar op zoek was, dank je wel kerel ... je hebt net mijn dag gered ... pas op
    toegevoegd de auteur Mr. Sam, de bron

    u kunt een css-klasse instellen voor zowel de ankerlink als de afbeelding en een classname-selector gebruiken om de klikgebeurtenis te haken

    $ ( "MyClass"). Klik (function() { //Dingen doen })

    0
    toegevoegd
    zou je alsjeblieft een beetje specifieker kunnen zijn omdat ik denk dat je iets hebt ... ik bedoel dat ik dit alternatief leuk vind
    toegevoegd de auteur Mr. Sam, de bron

    Dat lijkt echt te werken. Merk op dat vorige een functie is.

    Als alternatief zou je zoiets kunnen doen

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