Je crée dynamiquement un lien hypertexte dans le code c # derrière le fichier ASP.NET. J'ai besoin d'appeler une fonction JavaScript sur un clic client. Comment puis-je accomplir cela?
Réponses
Trop de publicités? Encore plus chiche, au lieu des typical href="#"
ou href="javascript:void"
ou href="whatever"
, je pense que cela a beaucoup plus de sens:
var el = document.getElementById('foo');
el.onclick = showFoo;
function showFoo() {
alert('I am foo!');
return false;
}
<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>
Si Javascript échoue, il y a des commentaires. En outre, le comportement erratique (saut de page dans le cas de href="#"
, visite de la même page dans le cas de href=""
) est éliminé.
La réponse de JQuery. Depuis que JavaScript a été inventé pour développer JQuery, voici un exemple dans JQuery:
<div class="menu">
<a href="http://example.org">Example</a>
<a href="http://foobar.com">Foobar.com</a>
</div>
<script>
jQuery( 'div.menu a' )
.click(function() {
do_the_click( this.href );
return false;
});
// play the funky music white boy
function do_the_click( url )
{
alert( url );
}
</script>
Idéalement, j'aimerais éviter de générer des liens à vous de code derrière tout à fait comme votre code a besoin de recompiler à chaque fois que vous voulez faire un changement à la "majoration" de chacun de ces liens. Si vous avez à le faire, je ne serait pas l'intégration de votre javascript "appels" à l'intérieur de votre code HTML, c'est une mauvaise pratique tout à fait, votre balisage doit décrire votre document pas ce qu'il fait, c'est le travail de votre javascript.
Utiliser une approche où vous avez un code spécifique pour chaque élément (ou la classe si sa fonctionnalité commune), puis utiliser l'Amélioration Progressive, pour ajouter le gestionnaire d'événement(s), quelque chose comme:
[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");
[Javascript]
document.getElementById('uxAncMyLink').onclick = function(e){
// do some stuff here
return false;
}
De cette façon, votre code ne sera pas de pause pour les utilisateurs avec JS désactivé et il aura une claire séparation des préoccupations.
L'espoir qui est de l'utilisation.