使用$.get()的jquery .each()方法

3
基本上我想基于 .home-val-icons 检查 HTML 值,获取这些值,创建路径,并根据创建的路径输出 SVG 代码。
 //Loops through each element
 //Gets html contents
 //Creates a path based on location.origin and html contents
 $('.home-nav-icons').each(function() {
    var counter = 0;
    var select =  $(this).html();
    var loc = location.origin;
    var findIcon = loc+"/wp-content/themes/Proxy-Engine/assets/icons/svg/"+select+".svg";
    console.log(findIcon);

    //Gets svg based on path,
    //loops through data objects
    $.get(findIcon, function(data, counter) {
      $.each(data, function(counter) {

        var svgData = data[counter];

        $('.home-nav').append(svgData);

      });
      counter++;
    });
});

控制台错误:

未捕获的安全错误: 无法从'Document'读取'cookie'属性:对于此文档,访问被拒绝。


你在用什么浏览器? - HelloWorld
你能用 (function() { ... code ... }()); 把每个函数都包装起来吗? - mapodev
你正在使用2次counter变量.. 这是不好的~ - Arthur
我正在使用Chrome浏览器,计数器工作正常。它的输出是正确的,但每个返回值都带有“1.0nullCSS1Compatapplication/xml”。 - sonnyinsf
1个回答

0

如果是在Chrome上,可能是一个bug。也许你可以通过

(function(cookie, localStorage) {
    $('.home-nav-icons').each(function() {
    var counter = 0;
    var select =  $(this).html();
    var loc = location.origin;
    var findIcon = loc+"/wp-content/themes/Proxy-Engine/assets/icons/svg/"+select+".svg";
    console.log(findIcon);

    $.get(findIcon, function(data, counter) {
      $.each(data, function(counter) {

        var svgData = data[counter];

        $('.home-nav').append(svgData);

      });
      counter++;
    });
}(cookie, localStorage));

所以主要的重点是用一个函数包装器来包裹它。
(function(cookie, localStorage) {...code...} (cookie, localStorage));

但我猜这不是错误的地方。所以你需要在另一个范围内使用包装器。也许尝试用整个代码。


我尝试按照您建议的方式进行结构化,但没有输出任何内容,并返回一个错误,指出未设置任何cookie。 - sonnyinsf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接