Jquery 每个只对第一项有效

Jquery 每个只对第一项有效,jquery,each,preload,Jquery,Each,Preload,我正在尝试预加载一个html文件,其内容随后将在遍布整个网站的几个可扩展按钮上使用 问题是,只有页面的第一个按钮的内容以这种方式加载,其余按钮在展开时不显示任何内容 我确实注意到这里还有其他关于类似问题的问题,但我遇到的解决方案似乎都不适用于这种情况。因此,任何帮助都将不胜感激 脚本的相关部分: $(document).ready(function () { var thisLink = $("a.ajax-link"); var targetUr

我正在尝试预加载一个html文件,其内容随后将在遍布整个网站的几个可扩展按钮上使用

问题是,只有页面的第一个按钮的内容以这种方式加载,其余按钮在展开时不显示任何内容

我确实注意到这里还有其他关于类似问题的问题,但我遇到的解决方案似乎都不适用于这种情况。因此,任何帮助都将不胜感激

脚本的相关部分:

$(document).ready(function () {
     
    var thisLink = $("a.ajax-link");
    var targetUrl = thisLink.attr("data-href");
    var target = thisLink.data("ajaxtarget");
 
    $(target).each(function( index, btn ) {
        $(this).load(targetUrl, function () {
          console.log('Success');
        });
      });
    
});
如果有任何其他信息对你有用,请告诉我。
非常感谢您抽出时间

假设选择器
a.ajax-link
选择所有可扩展的链接,然后
var thisLink=$(“a.ajax-link”)
保存页面上所有可扩展链接元素的数组。因此,
var target=thisLink.data(“ajaxtarget”)仅接收数组中第一个元素的数据属性

解决方案很简单:

您需要为每个可扩展链接运行
foreach
循环,并从每个链接获取相应的数据

$(document).ready(function () {
   $.ajax({
     url: "http://example.com/path/to/html/file",
     dataType: "html",
     success: function(html) {
        $.each($("a.ajax-link"), function() {
          let targetUrl = $(this).data('href');
          let $target = $($(this).data('ajaxtarget'));
          $target.load(targetUrl, function() {
            console.log('success');
          });
        });
     }
    });
});

这就成功了,谢谢你。对于详细的解释也是如此;这真的帮助我更好地理解了它们是如何工作的。注意,你的ajax代码毫无意义,你获取了文件,但你没有在任何地方使用html。如果这只是一个示例,那么您可以删除$.ajax,因为它与问题无关,因为它不起任何作用。我只是从脚本中复制/粘贴了代码的确切部分,认为这可能有助于发现错误。现在清理东西。