Existe-t-il un moyen de masquer() les éléments de recherche sans correspondance en utilisant mark.js? Après avoir lu la documentation, j'ai d'abord pensé que je pouvais utiliser l'option "noMatch" pour écrire une fonction personnalisée afin de masquer la div parente d'un texte sans correspondance, mais cela ne fonctionne pas comme espéré.Existe-t-il un moyen de masquer() les éléments de recherche sans correspondance en utilisant mark.js?
Par exemple, si j'utilise mark.js pour rechercher et mettre en évidence « Lorem » dans ce qui suit:
<div class="panel-body context">
<h2>Lorem</h2>
<div>
<p>ipsum</p>
<p>lorem</p>
</div>
<h2>ipsum</h2>
<div>
<p>ipsum</p>
<p>lorem</p>
</div>
</div>
Comment puis-je obtenir à seulement renvoyer les éléments appariés comme ça?
<div class="panel-body context">
<h2><span="highlight">Lorem</span><h2>
<div>
<p><span="highlight">lorem</span></p>
</div>
<div>
<p><span="highlight">lorem</span></p>
</div>
</div>
Voici mon bloc actuel de code:
$(function() {
var mark = function() {
// Read the keyword
var keyword = $("input[name='search-keyword']").val();
// Determine selected options
var options = {
"element": "span",
"className": "highlight",
"separateWordSearch": false,
"noMatch": function(term) {
term.hide(); // WHERE I HOPED I COULD ADD HIDE LOGIC
}
}
// Remove previous marked elements and mark
// the new keyword inside the context
$(".panel-body context").unmark({
done: function() {
$(".panel-body context").mark(keyword, options);
}
});
};
$("input[name='search-keyword']").on("input", mark);
});
EDIT Voici mon modifié jsfiddle des exemples de mark.js pour un meilleur exemple de ce que je tente de faire. Merci pour toute assistance à l'avance!
Vous pouvez utiliser le ': not'-sélecteur' psuedo .Panneau corps h2: non (HIGHLIGHT), .Panneau-corps p: non (HIGHLIGHT) {display: aucun; } ' –
@Rob M. J'apprécie votre temps, mais je ne comprends pas où je pourrais mettre cette logique en utilisant la bibliothèque mark.js. Pensez-vous que cela irait après 'done: function()' ou? –