JQuery:这将返回 [对象窗口]



所以我正在研究一个搜索栏,类似于 http://www.justdelete.me 上的界面。

我在每个项目上都放置了标签,因此我可以搜索相关术语,并且仍然得到相同的结果。所以我基本上在每个列表项中都有一个列表。这是 HTML,所以你知道我的意思:

    <ul class="list">
        <li>
            <h2 class='Item-list'>
                Car
            </h2>
            <ul class="tags" id='car'>
                <li class="tag">vehicle</li> 
                <li class="tag">autombile</li>
            </ul>
        </li>
        <li>
            <h2 class='Item-list'>
                House
            </h2>
            <ul class="tags" id='house'>
                <li class="tag">house</li>
                <li class="tag">domicile</li>
                <li class="tag">residence</li>
                <li class="tag">house</li>
                <li class="tag">home</li>
            </ul>       
        </li>
        <li>
            <h2 class='Item-list'>
                Bag
            </h2>
            <ul class="tags" id='bag'>
                <li class="tag">bag</li>
                <li class="tag">bag</li>
                <li class="tag">rucksack</li>
                <li class="tag">suitcase</li>
            </ul>   
        </li>

我的jquery隐藏和显示项目如下:

    //hide and show items
    $(".tags:contains('" + searchquery + "')").parentsUntil(this, 'li').removeClass('no-display');
    $(".tags:not(:contains('" + searchquery + "'))").parentsUntil(this, 'li').addClass('no-display');

所以直到现在都没有问题。

当我尝试将包含项目标题的 h2 更改为我在搜索框中键入的任何内容时,就会出现问题。

所以说我输入"V"。我希望我的车 h2,更改为车辆,因为它是汽车的标签之一。

我尝试使用以下代码:

    "use strict";
    $(".tag:contains('" + searchquery + "')").parentsUntil(this, 'li').children().first().replaceWith('<h2 class="Item-list">'+this+' </h2>');

但它不会更改为车辆,而是更改为文本:[对象窗口]

提前非常感谢!

编辑:这是小提琴。 http://jsfiddle.net/6f8F8/2/

this引用当前对象,您需要在元素中获取texthtml,因此请尝试使用text()

$(".tag:contains('" + searchquery + "')").parentsUntil(this, 'li').children().first().replaceWith('<h2 class="Item-list">'+ $(this).text() +' </h2>');

html()

$(".tag:contains('" + searchquery + "')").parentsUntil(this, 'li').children().first().replaceWith('<h2 class="Item-list">'+ $(this).html() +' </h2>');

最新更新