在页面加载时运行jQuery

qyswt5oh  于 2023-10-17  发布在  jQuery
关注(0)|答案(3)|浏览(120)

我有下面的jQuery,它在用户输入框中运行。

var $rows = $('#table tbody 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();
});

如果页面加载时输入框中已经有文本,如何运行相同的jQuery?

hl0ma9xz

hl0ma9xz1#

只需将所有逻辑移动到它自己的命名函数中:

function doFilter() {
  var $input = $('#search'),
    val = '^(?=.*\\b' + $.trim($input.val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
    reg = RegExp(val, 'i'),
    text;

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

$(function() {
  $('#search').on('keyup', doFilter); // Add it as a listener

  doFilter(); // Call it upon initialization
});
mnemlml8

mnemlml82#

你可以使用ready函数检查文本框中是否有文本。

$(document).ready(function(){
  if ($("#search").val() !== "") {
    // your code here.
  }
});
o2g1uqev

o2g1uqev3#

你应该把逻辑移动到它自己的函数中,但是如果你不想重构你所拥有的,你可以触发keyup事件。

$(function() {
  $('#search').keyup(function() {
    //your existing code
    console.log($(this).val());
  }).trigger("keyup");
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="search" value="abc" />

相关问题