提问者:小点点

为每个文件执行jQuery脚本,然后打印结果,但要多次获得第一个结果


我正在尝试使用$('.yurubfa')[0].href;获取每个页面的第一个链接,但是,这个代码获取所有页面的数据,然后多次打印第一个页面的链接。

我做错了什么?

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<?php 

function pageNum($pageNum) {

  include $pageNum.".html";

?>
    <script> 
    $(document).ready(function(){
      const el = $('.yuRUbf a')[0].href;
      console.log(el);
    });
    </script>
<?php 

}


pageNum("1");
pageNum("2");

 ?>

编辑:

让我用另一种方式解释:我有5个html页面,每个html页面包括10个链接,我想要每个html页面的第一个链接。

所以我使用jQuery脚本提取href属性值,它是链接,但是,它不是提取每个页面的第一个链接,而是提取第一个页面的第一个链接5次,因为我有5个文件。


共1个答案

匿名用户

鉴于现有代码返回所有页面的链接,我将假设每个“页面”包含类似于

<div class='yuRUbf'>
...
<div>

在这种情况下,您可以在结束时使用一个调用(即不在pageNum循环内)将所有第一个链接整理成一个数组

var links = $(".yuRUbf").map((i,e) => $(e).find("a")[0].href).toArray()

(如果您将此传递给其他对象,例如links.addClass(“active”),则不要使用.toArray())

如果您更喜欢/需要一个循环而不是一个数组,这相当于:

$(".yuRUbf").each(function(i, e) {
  var el = $(this).find("a")[0].href;
  console.log(el);
});

示例:

null

$(function() {
    const first_links = $(".yuRUbf").map((i,e)=>$(e).find("a")[0].href).get();
    console.log(first_links)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='yuRUbf'>
  <div>
    <a href='l1'>l1</a>
  </div>
  <a href='l2'>l2></a>
  <a href='l2'>l2</a>
</div>
<div class='yuRUbf'>
  <div>
    <a href='l12'>l12</a>
  </div>
  <a href='l22'>l22></a>
  <a href='l22'>l22</a>
</div>