从jquery到vanila js text.touppercase [关闭]

问题描述 投票:0回答:1
var vl = $("#minput").val().toUpperCase();

$(".test li").toggle( $("this").text().toUpperCase().indexOf(vl) > -1 );

这不起作用...

Var test = document.querySelector(".test li")
Var vl = minp.value.toUpperCase();

test.toggle(.....…...) 
javascript html jquery css
1个回答
0
投票

这应该是正确的 jQuery:

var vl = $("#minput").val().toUpperCase();

$(".test li").each(function() {
  var $li = $(this);
  $li.toggle($li.text().toUpperCase().indexOf(vl) > -1);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<input id="minput" value="foo">
<hr>
<ul class="test">
  <li>foo</li>
  <li>bar</li>
  <li>foobar</li>
</ul>

这是一个交互式 jQuery 版本:

$("#minput").on('input', function() {
  var searchText = $(this).val().toUpperCase();

  $(".test li").each(function() {
    var $li = $(this);
    $li.toggle($li.text().toUpperCase().indexOf(searchText) > -1);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<input type="search" id="minput" value="foo" placeholder="Search...">
<hr>
<ul class="test">
  <li>foo</li>
  <li>bar</li>
  <li>foobar</li>
</ul>

最后,普通的 JS 等价物:

这是一个互动版本:

function toggle(el, show) {
  el.style.display = show ? '' : 'none';
}

document.querySelector("#minput").addEventListener('input', function(e) {
  const searchText = e.target.value.toUpperCase();

  document.querySelectorAll(".test li").forEach(function(li) {
    toggle(li, li.textContent.toUpperCase().includes(searchText));
  });
});
<input type="search" id="minput" value="foo" placeholder="Search...">
<hr>
<ul class="test">
  <li>foo</li>
  <li>bar</li>
  <li>foobar</li>
</ul>

© www.soinside.com 2019 - 2024. All rights reserved.