jQuery不会被解雇

时间:2014-12-17 01:33:35

标签: javascript jquery regex

我尝试在此页here上实现此代码,这是我的小提琴JSFiddle,一切似乎都很好(过滤)但是当我尝试在我的页面中实现它时,jQuery没有&似乎工作,我不知道为什么。以下是我在filter.php页面上的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Filter</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>

var $rows = $('#table tr');
$('#search').keyup(function() {

    var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
        reg = RegExp(val, 'i'),
        text;

    $rows.show().filter(function() {
        text = $(this).text().replace(/\s+/g, ' ');
        return !reg.test(text);
    }).hide();
});

</script>
</head>

<body>

<input type="text" id="search" placeholder="Type to search">
<table id="table">
   <tr>
      <td>Apple</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Grapes</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Orange</td>
      <td>Orange</td>
   </tr>
</table>
</body>
</html>

谁能告诉我,我做错了什么?

4 个答案:

答案 0 :(得分:4)

将您的代码包裹在$( document ).ready()

  

(文档)$。就绪(函数(){

     

[您的代码在这里]

     

});

答案 1 :(得分:2)

试试这个

$( document ).ready(function() {
    var $rows = $('#table tr');
$('#search').keyup(function() {

    var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
        reg = RegExp(val, 'i'),
        text;

    $rows.show().filter(function() {
        text = $(this).text().replace(/\s+/g, ' ');
        return !reg.test(text);
    }).hide();
});
});

答案 2 :(得分:1)

当你调用jQuery函数时,DOM尚未加载,因此jQuery将找不到所请求的元素。为避免这种情况,请将其包装在

$(document).ready(function(){ /* code here */ }

要缩短文件的加载时间,您可能需要在结束</body>代码

之前将javascript放在文件末尾

答案 3 :(得分:1)

&#13;
&#13;
$(document).ready(function() {  //check it!

  var $rows = $('#table tr');
  $('#search').keyup(function() {

    var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
      reg = RegExp(val, 'i'),
      text;

    $rows.show().filter(function() {
      text = $(this).text().replace(/\s+/g, ' ');
      return !reg.test(text);
    }).hide();
  });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<input type="text" id="search" placeholder="Type to search">
<table id="table">
  <tr>
    <td>Apple</td>
    <td>Green</td>
  </tr>
  <tr>
    <td>Grapes</td>
    <td>Green</td>
  </tr>
  <tr>
    <td>Orange</td>
    <td>Orange</td>
  </tr>
</table>
&#13;
&#13;
&#13;