如何过滤从jQuery返回的数据?

Ank*_*rma 8 html javascript jquery scope jquery-traversing

jQuery代码:

$(document).ready(function() {
  $('#s-results').load('get_report1.php').show();
  $('#search-btn').click(function(){ showValues(); });
  $(function() {
    $('form').bind('submit', function() { showValues(); return false; });
  });

  function showValues() { 
    $.post('get_report1.php', { name: form.name.value }, 
      function(result) {
        $('#s-results').html(result).show();
      }
    ); 
  }
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<form name = "form">
   <div>Enter name</div>
     <input type="text" name="name" id="fn" />
     <input type="submit" value="Search" id="search-btn" />
   <div>
      <input type="text" id="se2" name="search22">
   </div>
</form>
<div id = "s-results" style="height:50px;">
</div>
Run Code Online (Sandbox Code Playgroud)

到目前为止,脚本运行完美.现在我只想再次从上面的函数中过滤返回的HTML.

为了实现这一点,我尝试了这行代码:

$(result).filter('#se2');
Run Code Online (Sandbox Code Playgroud)

在带result参数的函数下,但它不起作用.

那么如何过滤返回的HTML代码呢?

Adi*_*dil 6

您可能需要find()而不是filter根据需要获取后代,而过滤器" 将匹配元素的集合减少到与选择器匹配的元素或传递函数的测试 "

现场演示

$(result).find('#se2');
Run Code Online (Sandbox Code Playgroud)

如果#se添加,DOM则可以直接使用id选择器

se = $('#se2');
Run Code Online (Sandbox Code Playgroud)

我做了另一个演示(因为我还在等待你的演示无效)进一步详细说明如何将包含你所拥有的html的字符串传递给jQuery函数,$()以使用find搜索其中的元素.

现场演示

html = '<form name = "form"> \
   <div>Enter name</div> \
     <input type="text" name="name" id="fn" /> \
     <input type="submit" value="Search" id="search-btn" /> \
   <div> \
       <input type="text" id="se2" name="search22" value="se2"/> \
   </div> \
</form>\
<div id = "s-results" style="height:50px;"> \
</div> ';

alert($(html).find('#se2').val());  
Run Code Online (Sandbox Code Playgroud)

注意:您可以在上面通过进一步检查代码中的示例工作find 无法正常工作使用filter过这个的jsfiddle例子

  • 为什么不只是`$('#se')`? (2认同)