【问题标题】:Executing a jQuery script for each file and then print the results, BUT getting the first result multiple times为每个文件执行一个 jQuery 脚本,然后打印结果,但多次获得第一个结果
【发布时间】:2021-07-14 16:34:45
【问题描述】:

我正在尝试使用$('.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个文件。

【问题讨论】:

  • 您尝试过什么来解决问题?这和 PHP 有什么关系?
  • 然后多次打印第一页的链接 - 因为您将脚本包含在pageNum php 函数中,然后将其称为“多次”。如果您只想调用一次,请将其从pageNum 中取出。
  • 我不想调用一次,换个方式解释一下:我有5个html页面,每个html页面包含10个链接,我想要每个html页面的第一个链接。跨度>
  • 感谢您的澄清(和编辑)。是否有任何东西可以分隔/区分每个 include $pageNum.".html" 页面?我假设不是&lt;html&gt;&lt;body&gt;,因为它们应该只出现一次,但你的每个1.html/2.html 可能在顶部有&lt;div class='yuRUbf'&gt; - 如果是这样的话(或者如果你可以编辑它所以它或类似的情况)那么你可以使用$(".yuRUbf").map((i,e)=&gt;$(e).find("a")[0].href).get()
  • 可以(但我不建议将其作为可行的解决方案)将现有代码更改为const el = $('.yuRUbf:last a')[0].href; 没有 doc.ready - 使其内联运行。然后,代码在解析文档时一出现就运行,:last 将是刚刚呈现/包含的“当前”页面。但这是一种运行 javascript 的糟糕方式。

标签: php jquery function select


【解决方案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);
});

例子:

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

【讨论】:

  • 谢谢!我只是在之前的评论中尝试你的解决方案,它实际上解决了一半的问题,但我可以自己找到解决剩余问题的方法。
  • 我可以自己找到解决剩余问题的方法这是最好的方法:)
  • 每个页面有10个
    ,每个类都包含一个链接,剩下的我可以手动解决!再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多