javascript jQuery.next(selector)不给予我任何反馈[重复]

llew8vvj  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(423)

此问题已在此处有答案

Find the next element that is not immediate?(6个回答)
How to use jquery next() to select next div by class(2个答案)
1年前关闭。
我知道你可以在jQuery中使用.next()来获取下一个元素,但我也知道你可以给予一个参数,就像选择器一样,它会给你下一个与给定参数匹配的元素,但在我的情况下,它不起作用。示例:
HTML:

<div id="divTEST"></div>
        <span id="spanTEST"></span>
        <a href="google.com">Google</a>

JS:

let div = $("div#divTEST");

console.log(div.next());
console.log(div.next("a"));

现在,问题不是div.next(),因为我得到了'span'元素,问题是div.next(“a”),因为它没有给予我任何回报。我做错了什么?

km0tfn4u

km0tfn4u1#

这缺乏jquery的依赖性,但如果你使用querySelector,你可以使用css选择器来获取你想要的元素。querySelector只抓取第一个,querySelectorAll会抓取任何匹配的。

console.log(document.querySelector('#divTEST ~ a'));
<div id="divTEST"></div>
<span id="spanTEST"></span>
<a href="google.com">Google</a>
u4dcyp6a

u4dcyp6a2#

如果你需要使用jQuery,我做了一个函数来做你想要的。它在原始元素之后获取一个与选择器匹配的元素。

let div = $("div#divTEST");

function getChildBySelector(elm, selector)
{
  const ch = elm.nextAll();
  
  let f = null;
  
  for (let i = 0; i < ch.length; i++)
  {
    const e = $(ch[i]);
    
    if (e.is(selector))
    {
      f = e;
      
      break;
    }
  }
  
  return f;
}

console.log(div.next());
console.log(div.next("a"));
console.log(getChildBySelector(div, 'a'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="divTEST"></div>
<span id="spanTEST"></span>
<a href="google.com">Google</a>

如果你对纯JS没问题,你可以使用@tstrand66的答案。

相关问题