2009-08-13 10 views
4

Je suis en train de convertir des websforms à asp.net mvc et j'ai une question.jquery ajouter un événement onclick à un lien href

J'ai une boucle générant des liens dynamiques où picNumberLink est une variable dans une boucle et l'image est une liaison d'image variable.

projet

je veux éviter de mettre en ligne javascript actions ainsi dans mon WebForms est fait ce qui suit:

hyperLink.Attributes.Add("onclick", "javascript:void(viewer.show(" + picNumberlink + "))"); 

ce qui est l'équivalent en utilisant jquery en asp.net mvc?

J'ai vu des exemples d'utilisation de l'événement $ (document) .ready pour attacher sur des clics mais je n'arrive pas à comprendre la syntaxe pour passer la variable picNumberLink dans la fonction javascript.

suggestions?

Répondre

7

EDIT: Si vous générez vos liens avec l'ID de ce formulaire:

<a id="piclink_1" class="picLinks">...</a> 
<a id="picLink_2" class="picLinks">...</a> 

$('a.picLinks').click(function() { 
    //split at the '_' and take the second offset 
    var picNumber = $(this).attr('id').split('_')[1]; 
    viewer.show(picNumber); 
}); 
+0

D'où vient picNumberLink puisqu'il s'agit d'une variable? – leora

+0

@me - est-ce que cela a plus de sens maintenant? – karim79

+0

peut-être que c'est mon problème/question. J'ai juste une image alors où puis-je mettre le picNumber dans afin que je puisse l'attraper de javascript? Je ne suis pas l'affichage du texte – leora

1
var functionIWantToCall = function(){ 
    var wrappedLink = $(this); 
    //some serious action 
} 

//this should be called on document ready 
$("#myLinkId").click(functionIWantToCall); 

Si vous avez besoin pour obtenir l'URL de l'image, le garder dans href anchor`s:

var functionIWantToCall = function(event){ 
    event.preventDefault(); //this one is important 
    var link = $(this).attr('href'); 
    //some serious action 
} 
+0

ma question porte sur la façon dont je peux avoir la photo javascript jusqu'à la variable picNumberLink maintenant que sa non inline – leora

+0

Ajouter à champ caché à côté de lien , puis - dans functionIWantToCall utiliser "var picNumberLink = wrappedLink.next(). val()" –

+0

qui ressemble à un kluge mais s'il n'y a pas de manière plus élégante alors merci pour l'idée. quelle serait la syntaxe de celui-ci, juste une balise html cachée régulière – leora

1
$(document).ready(function() 
{ 

$('#LinkID').click(function() { 
    viewer.show($(this).attr('picNumber')); 
}); 

}); 

Vous pouvez ajouter un attribut appelé picNumber à votre balise d'hyperlien et régler ceci est votre vue mvc

Le lien dans votre vue pourrait ressembler à ceci:

<%= Html.ActionLink("Index", new { id = "LINKID", picNumber = 1 }) %> 
+1

$ (document) .ready (function() {}) peut être abreviated à $ (fonction() {}) –

+0

pour que cela fonctionne, aurais-je besoin les éléments suivants leora

1

En supposant que vous êtes en mesure de modifier le code HTML de sortie, ne pouvez pas vous mettre l'picNumberLink dans l'attribut id ou class?

HTML:

<a href="..." id="piclink-242" class="view foo-242"><img src="..."/></a>

jQuery:

$(function() { 
    // using the id attribute: 
    $('.view').click(function() { 
    viewer.show(+/-(\d+)/.exec(this.id)[1]); 
    }); 

    // or using the class attribute: 
    $('.view').click(function() { 
    viewer.show(+/(^|\s)foo-(\d+)(\s|$)/.exec(this.className)[2]); 
    }); 
}}
+0

viens juste de réaliser cela est très semblable à la réponse de karim79 ... Je pense que nous besoin de voir le code HTML de * moi * – searlea

Questions connexes