正在搜索 panel-group header

Searching through panel-group header

我正在尝试创建一个搜索引擎来搜索我生成的 panel-group,但我没有完成正确的选择器。

生成的标记如下所示:

<div id="output">
<div class="panel-group">
<div class="panel panel-default">
    <div class="panel-heading">
        <div>
            <a data-toggle="collapse" href="#1">test<span class="status">Enabled</span></a>
        </div>
    </div>
</div>
</div>

<div class="panel-group">
<div class="panel panel-default">
    <div class="panel-heading">
        <div>
            <a data-toggle="collapse" href="#2">Cookie<span class="status">Enabled</span></a>
        </div>
    </div>
</div>
</div>

等等...

然后我创建了一个输入字段

<input id="input_search" type="text" class="input-md">

还有我的 JS 代码

$j("#input_search").on('keyup', function(){
    console.log("keyUp");
    $j.each("#output .panel-group", function(i, val){
       console.log(val);
    });
    $j("#output").each(".panel-group .panel .panel-heading", function (i, val){

    });
});

我的问题是我不知道如何构建选择器。我尝试访问输出 div,然后在每个 .panel-heading 处设置起点,但出现此错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in #output .panel-group

有人可以帮我构建选择器吗?如何访问这么多child个元素?

为澄清起见,我想输入 t,然后只显示标题为 test 的面板。 header 中也包含的 "span" 不应包含在搜索结果中。

这是一个 fiddle: https://jsfiddle.net/78znm4t3/1/

您使用 $j.each 的方式有误。 $j.each 适用于数组但不适用于选择器。$j('').each 适用于选择器。我给你做了一个fiddlehere

你可以使用$j('some_selector').find('child_selector')获取子元素

正如您所提到的,您构建选择器并在每个选择器中使用的方式都不正确。将您的脚本部分修改为

var $j = jQuery.noConflict(true);
$j(document).ready(function () {

});
$j("#input_search").on('keyup', function(){
    console.log("keyUp");
    $j("#output .panel-group").each(function(i){
       console.log($j(this).text().trim());
    });
    $j("#output .panel-group .panel .panel-heading").each(function (i){

    });
});

我在你的 jsfiddle 中试过它有效。