Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 包含方法和突出显示元素的问题_Javascript_Jquery - Fatal编程技术网

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)
看起来没那么恶心。