Gibt es eine Möglichkeit,() unübertroffene Suchelemente mit mark.js zu verstecken? Nach dem Lesen der Dokumentation dachte ich zunächst, dass ich die "noMatch" -Option verwenden könnte, um eine benutzerdefinierte Funktion zu schreiben, um das übergeordnete div von nicht übereinstimmendem Text zu verbergen, aber es funktioniert nicht wie erhofft.Gibt es eine Möglichkeit,() unübertroffene Suchelemente mit mark.js zu verstecken?
Zum Beispiel, wenn ich mark.js bin mit suchen und markieren „Lorem“ in der folgenden:
<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>
Wie kann ich es nur auf die abgestimmte Elemente wie so zurückkehren?
<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>
Hier ist meine aktuellen Code-Block:
$(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 Hier ist meine verändert jsfiddle aus den mark.js Beispiele für ein besseres Beispiel dafür, was ich bin versucht zu tun. Vielen Dank für Ihre Hilfe im Voraus!
könnten Sie verwenden das ': not' psuedo-Selektor' .panel Körper h2: nicht (.highlight), .panel-Körper p: nicht (.highlight) {display: keiner; } ' –
@Rob M. Ich schätze Ihre Zeit, aber ich verstehe nicht, wo ich diese Logik mit der mark.js-Bibliothek setzen könnte. Denkst du, dass es nach der 'done: function()' oder? –