2011-11-11 4 views
0

En ce moment, je suis en utilisant ceci:Comment ajouter un "#" dans cet attribut href en utilisant jQuery?

// Scroll to matched dish 
$("#scrolll").click(function() { 
    $("a#scrolll").attr("href", $("li.matched").attr("id")); 
    return false; 
}); 

Pour ajouter l'ID de l'attribut href de li.matched-a#scroll. Par exemple, si li.matched a un ID de #menu123, a#scrolll ressemblera à ceci:

<a id="scrolll" href="menu123"> 

Mais je voudrais la faire ressembler à ceci:

<a id="scrolll" href="#menu123"> 

Toutes les suggestions pour y parvenir?

Répondre

4

Utilisez le + operator pour indiquer # au début.

// Scroll to matched dish 
$("#scrolll").click(function() { 
    $("a#scrolll").attr("href", "#" + $("li.matched").attr("id")); 
    return false; 
}); 

De plus, étant donné que vous changez l'élément à l'intérieur d'un gestionnaire d'événements pour, vous pouvez utiliser $(this) plutôt que resélectionner l'élément. (Cybernate a remarqué ce premier in his answer)

+1

le canon le plus rapide de l'ouest – alexchenco

2

Ajoutez "#" avec l'opérateur +.

vous pouvez également remplacer $("a#scrolll").attr avec $(this).attr puisque le code est dans le gestionnaire de clic de a#scrolll

Essayez ceci:

$("#scrolll").click(function() { 
    $(this).attr("href", "#" + $("li.matched").attr("id")); 
    return false; 
}); 
+4

+1 pour avoir été le premier à remarquer que vous pouvez utiliser '$ (this)' –

2

Juste concaténer les cordes:

// Scroll to matched dish 
$("#scrolll").click(function() { 
    $(this).attr("href", '#' + $("li.matched").attr("id")); 
    return false; 
}); 

Vous pouvez utiliser l'opérateur + pour joindre des chaînes ensemble. J'ai également remplacé votre sélecteur redondant par $(this).

Faites également attention à votre deuxième sélecteur li.matched. Vous n'êtes pas sûr à 100% qu'il y a seulement un élément avec la classe .matched, donc votre attr("id") pourrait être indéfini s'il en existe deux éléments avec cette classe.

Questions connexes