Javascript 包含方法和突出显示元素的问题
我想突出显示一个元素,该元素包含一个写在文本框中的字符串。这是代码中应该执行的部分:Javascript 包含方法和突出显示元素的问题,javascript,jquery,Javascript,Jquery,我想突出显示一个元素,该元素包含一个写在文本框中的字符串。这是代码中应该执行的部分: $("#rightContainer .magnifier").click(function () { var a = $("#searchBox").val(); if (a != "") { var foundin = $('div:contains(a)'); foundin.addClass("highlighted"); aler
$("#rightContainer .magnifier").click(function () {
var a = $("#searchBox").val();
if (a != "") {
var foundin = $('div:contains(a)');
foundin.addClass("highlighted");
alert(a);
}
})
问题是整个页面都会突出显示。我假设这是因为我有一个主容器,它有子容器,所以contains方法选择整个主容器。是这样还是因为其他原因,有人有更好的方法吗?提前感谢。选择器将返回包含您正在搜索的文本的任何元素,在本例中为“a”
。这与名为a
的变量无关。也许你想做这样的事:
$("#rightContainer .magnifier").click(function () {
var a = $("#searchBox").val();
if (a != "")
{
var foundin = $("div:contains('" + a + "')");
foundin.addClass("highlighted");
alert(a);
}
})
选择器将返回包含您正在搜索的文本的任何元素,在本例中为“a”
。这与名为a
的变量无关。也许你想做这样的事:
$("#rightContainer .magnifier").click(function () {
var a = $("#searchBox").val();
if (a != "")
{
var foundin = $("div:contains('" + a + "')");
foundin.addClass("highlighted");
alert(a);
}
})
如果我理解正确,您只希望突出显示包装该搜索框的div,而不是任何其他div。使用查找该div
$("#rightContainer .magnifier").click(function () {
var a = $("#searchBox").val();
if (a != "")
{
$("#searchBox").closest('div').addClass('highlighted');
}
})
如果我理解正确,您只希望突出显示包装该搜索框的div,而不是任何其他div。使用查找该div
$("#rightContainer .magnifier").click(function () {
var a = $("#searchBox").val();
if (a != "")
{
$("#searchBox").closest('div').addClass('highlighted');
}
})
谢谢,你说得对,但我的问题在解决后仍然存在。主容器内的所有内容都会高亮显示,而外部的文本不会高亮显示。@user3078638它仍会高亮显示包含您搜索的文本的任何
。也许您需要执行类似于$('div.mainContainer div:contains(…)')的操作。
?如果看不到HTML,就很难准确地知道。我认为它需要从内到外工作,当孩子突出显示时,不允许在家长身上使用它。。。不确定用什么最优雅的方式来处理。也许将文本包装成一个span,然后从中找到最接近的父级div
,并突出显示它?不确定…@user3078638在将其应用于包含搜索字符串的div之前,您可能还希望清除所有div上突出显示的类。是的,这是肯定的.highlightable:contains(foo)
看起来不那么恶心了。谢谢,你说得对,但我的问题在修复后仍然存在。主容器内的所有内容都会高亮显示,而外部的文本不会高亮显示。@user3078638它仍会高亮显示包含您搜索的文本的任何
。也许您需要执行类似于$('div.mainContainer div:contains(…)')的操作。
?如果看不到HTML,就很难准确地知道。我认为它需要从内到外工作,当孩子突出显示时,不允许在家长身上使用它。。。不确定用什么最优雅的方式来处理。也许将文本包装成一个span,然后从中找到最接近的父级div
,并突出显示它?不确定…@user3078638在将其应用于包含搜索字符串的div之前,您可能还希望清除所有div上突出显示的类。是的,这是肯定的.highlightable:contains(foo)
看起来没那么恶心。