En exécutant ce code:
if($(`.partslider[data-pathb=${pathb}]`).length > 0){console.log('323');}
J'obtiens le résultat suivant: anima/01/inc
.
Maintenant, j'essaye de l'utiliser dans cette fonction:
let pathb = $('.cslideract').attr('data-pathb'); console.log(pathb);
J'obtiens cette erreur:
expression non reconnue: .partslider [data-pathb = anima / 01 / inc /]
J'ai essayé la même chose avec let pathb = 'n'importe quoi'
et ça marche, mais ma variable est anima / 01 / inc code >
3 Réponses :
Comme indiqué dans la documentation jQuery ici , vous devez utiliser des guillemets autour la valeur dans les sélecteurs d'attributs. Essayez ceci:
if($(`.partslider[data-pathb="${pathb}"]`).length > 0){console.log('323');}
Ceci est également vrai pour Sélecteurs d'attributs CSS .
À peu près sûr que vous ne devez utiliser des guillemets que lorsque vous avez des caractères spéciaux (peut-être non alphanumériques?)
Non, ils sont nécessaires pour les identifiants valides et la page de jQuery indique que vous avez besoin d'une chaîne entre guillemets si ce n'est pas un identifiant valide.
Utilisez des guillemets ""
entourant le littéral
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cslideract" data-pathb="anima/01/inc"></div> <div class="partslider" data-pathb="anima/01/inc"></div>
let pathb = $('.cslideract').attr('data-pathb'); console.log(pathb); if($(`.partslider[data-pathb="${pathb}"]`).length > 0){console.log('323');}
Vous pouvez échapper des caractères ayant une signification particulière dans un sélecteur CSS ( $ .escapeSelector () a>): <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
let pathb = 'anima/01/inc';
console.log(`.partslider[data-pathb=${$.escapeSelector(pathb)}]`);
if($(`.partslider[data-pathb=${$.escapeSelector(pathb)}]`).length > 0){
console.log('323');
}
Avez-vous essayé de citer votre modèle? (par exemple
$ (`.partslider [data-path =" $ {path} "]`)
)Dans l'expression du sélecteur CSS, la valeur de l'attribut doit être entre guillemets.
@Pointy, je ne vois aucun
sélecteur css
dans mon codeLa chaîne que vous passez à jQuery est un sélecteur CSS.