2012-10-10 1 views
2

Possible en double:
jquery or css selector? select all id’s that start withID avec jQuery trouver composante variable

Ce code change attribut de src#idview sur la souris sur des ids 1-3.

$("#id_1, #id_2, #id_3, #etc").mouseover(function(){ 
    $("#idview").attr("src","id_" + this.id.substr(3,4) + ".jpg"); 
}); 

Comment puis-je sélectionner un ID par "#id_" puis un entier variable? Dire par exemple s'il y avait 1000 images, où il serait impraticable d'écrire ceci à long terme?

Cela peut-être quelque chose comme $("#id_"+*)?

+0

Comment changez-vous la source? basé sur l'identifiant? – balanv

Répondre

5

Utilisez un attribute starts-with selector:

$("[id^='id_']").mouseover(function() { 
    //Do stuff 
}); 

Il serait un peu plus efficace pour clarifier le type d'élément avant le sélecteur d'attribut, mais il est pas clair de votre question exactement quels sont les éléments que vous essayez de choisir.

+0

Ah brillant, n'a pas pensé à cette approche. Merci. Les types d'éléments sont les deux images si cela aide? –

+0

@idb - De rien, je suis content que je puisse vous aider. Dans ce cas, ajoutez simplement 'img' avant le sélecteur d'attribut:' img [id^= 'id _'] '. –

0

simplement incorporer l'entier variable dans une chaîne:

var integer = 2 
    myid = "id_" + integer; 

$("#" + myid) // Selector 

Bien que si vous n'avez pas besoin de cibler ID spécifiques alors j'aller avec la réponse de James.

0
$('[id^="id_"]').mouseover(function(){ 
    $('#idview').attr('src', this.id + ".jpg")); 
}); 

Vous pouvez également ajouter une classe aux éléments que vous souhaitez lier, puis l'utiliser comme sélecteur.

$('.myClass').mouseover(function() { 
    //... 
});