Je sais que l'on peut utiliser :contains pour obtenir les éléments dont l'innerHTML contient une certaine chaîne, mais comment puis-je obtenir les éléments dont l'innerHTML commence par une chaîne ?
Réponses
Trop de publicités?Je sais que c'est vieux, mais si quelqu'un cherche une meilleure réponse, jQuery depuis la version 1.1.4 a une fonction ":contains("text")" selector .
Exemple HTML :
<p>Please reply above this line...</p>
Exemple : jQuery sélectionne le code HTML ci-dessus :
$('p:contains("Please reply above this line")');
Vous pourriez faire quelque chose comme ça :
<!doctype HTML>
<html>
<head>
<script type = "text/javascript" language = "JavaScript" src = "jquery-1.4.2.min.js"></script>
<script type = "text/javascript" language = "JavaScript">
var elems;
$(document).ready(function(){
$("div").each(function(){
var content = $(this).html();
if (content.match(/asdf/)){
alert(content);
}
});
});
</script>
</head>
<body>
<div>asdfaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
</body>
</html>
Pour savoir si le problème se situe au niveau du contenu, si vous voulez les premiers caractères, vous devez diviser le contenu sur ces caractères et ne tester que ceux-ci.
La méthode de filtrage vous permet de comparer le contenu d'un élément, puis vous pouvez faire ce que vous voulez (dans ce cas, j'ai fait addClass('selected')
).
$('p').filter(function() {
var searchString = 'Blue';
return ($(this).html().substring(0, searchString.length) == searchString);
}).addClass('selected');
Démonstration :