首页 > 解决方案 > 为每个文件执行一个 jQuery 脚本,然后打印结果,但多次获得第一个结果

问题描述

我正在尝试使用 获取每个页面的第一个链接$('.yuRUbf a')[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个文件。

标签: phpjqueryfunctionselect

解决方案


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

<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);
});

例子:

$(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>


推荐阅读