【问题标题】:Can't get ATTR value from IMG SRC using EACH (jquery)无法使用 EACH (jquery) 从 IMG SRC 获取 ATTR 值
【发布时间】:2015-03-13 01:50:48
【问题描述】:

当我尝试使用 3 个不同的 URL 获得 3 个不同的结果时,'each' 函数返回 3 次未定义。

var src = $('img').each(function(){
    $(this).attr("src");
alert(src);
    });

我在 S.O. 上找到了几个答案。但他们似乎都没有回答这个(非常基本的)问题。

我想要做的是用更具体的 URL 替换每个 img url

例如:

a.jpg --> a-ok.jpg
b.jpg --> b-ok.jpg
c.jpg --> c-ok.jpg

这就是为什么我需要使用 EACH 的所有 img 的 URL。

请帮忙。

谢谢

【问题讨论】:

    标签: jquery each attr


    【解决方案1】:
    $('img').each(function(){
      var src = $(this).attr("src");
      console.log( src );
      // now override the src 
      var pos = src.lastIndexOf("."); // there can be numerous . in the url
      $(this).attr('src', ( src.substring(0,pos) + '-OK.'+src.substring(pos+1) ) ) ;
    });
    

    【讨论】:

    • src.substring(0,pos) - 什么是pos
    【解决方案2】:

    您的代码错误。通过将src 变量分配给$('img').each,您将获得元素集合,而不是src 属性。

    应该是:

    $('img').each(function(){
      var src = $(this).attr("src");
      alert( src );
    });
    

    要替换 src 属性,您需要在 each 回调函数中执行此操作。

    例如这样:

    $('img').each(function(){
      var src = $(this).attr("src");
      $(this).attr("src", src.replace('.', '-ok.'));
    });
    

    【讨论】:

    • 图像名称中可以有任意数量的点,因此请使用:replace('.jpg','-ok.jpg')
    • 这只是一个例子。我猜 OP 想要一些完全不同的东西。
    • 只有一件事不对,src应该设置在里面。我认为totally wrong 是不必要的
    • 您还可以使用将函数传递给.attrjsfiddle.net/9m51f171。哪个更短更清晰(如果我没记错的话会更慢)。
    • 我现在看到了我的错误,应该在每个函数中创建变量。非常感谢大家。
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多