实时文本搜索jquery,错误的选择器?

时间:2013-05-02 08:09:11

标签: javascript jquery search text live

所以我对此很陌生,请耐心等待我:)

这对我有用,这就是我所拥有的:

HTML:

<form id="live-search" action="" class="styled" method="post">
<fieldset>
    <input type="text" class="text-input" id="filter" value="" placeholder="Søg efter skole..." />
    <span id="filter-count"></span>
</fieldset>

jQuery的:

$(document).ready(function(){
$("#filter").keyup(function(){

    // Retrieve the input field text and reset the count to zero
    var filter = $(this).val(), count = 0;

    // Loop through the comment list
    $(".ss_voting_manual .ss_voting_entry_list").find("li").each(function(){

        // If the list item does not contain the text phrase fade it out
        if ($(this).text().search(new RegExp(filter, "i")) < 0) {
            $(this).fadeOut();

        // Show the list item if the phrase matches and increase the count by 1
        } else {
            $(this).show();
            count++;
        }
    });

    // Update the count
    var numberItems = count;
    $("#filter-count").text("Klasser fundet = "+count);
});
});

但是当我进行搜索时,它会找到li,但它失去了大部分风格,如果你看到screenshot它会更有意义,那么我可以写作。

 <div id="manual_voting" class="ss_voting_manual">
<ul class="ss_voting_entry_list">
  <li class="my_db_entry item_handle_22924874" id="my_db_entry_22924874" style="">
    <div class="entry_title entry_details">
      <h4>Koge Handelsskole - 3C</h4>
    </div>

    <div class="entry_photo">
      <ol>
        <li style="display: list-item;"><img alt="" src=
        "https://d2ndy3xguswqvu.cloudfront.net/images/220405/22924874/original_89bf1593506cabda8ec9fd63ac6e35d0.png"></li>
      </ol>
    </div>

    <div class="entry_votes entry_details">
      <span class="votes">65</span> Stemmer
    </div>

    <div class="entry_description entry_details ss_preserve_ws"></div>

    <div class="itemActions entry_actions">
      <ul>
        <li class="item_vote" style="display: inline;"><a class="vote_link vote"
        href="#" onclick=
        "SST.vote_for(widget_14972805, 22924874, this); return false;">Stem</a></li>

        <li class="item_share" style="display: inline;"><a class="share_link" href=
        "#" onclick="ss_share(widget_14972805, 22924874); return false;">Del med dine
        venner</a></li>
      </ul>
    </div>

    <div class="clear"></div>
  </li>

  <li class="my_db_entry item_handle_22924821" id="my_db_entry_22924821" style=
  "display: list-item;">
    <div class="entry_title entry_details">
    </div>

    <div class="clear"></div>
  </li>
</ul>

<div class="clear"></div>

<div class="ss_voting_paging" id="paging_voting"></div>

1 个答案:

答案 0 :(得分:1)

错误的选择器

在您的目标代码中,您正在搜索li下的所有.ss_voting_manual .ss_voting_entry_list,包括大孩子。

$(".ss_voting_manual .ss_voting_entry_list").find("li")

这会导致您的孙子li被隐藏的img标签包裹起来。

解决方案

将您的选择器更改为仅提取直接后代li

$(".ss_voting_manual .ss_voting_entry_list").children("li")

 $(".ss_voting_manual .ss_voting_entry_list > li")

这只会在li之后获取ul的第一个直接集合。