jQuery - $(' this'),循环或数组?

时间:2016-03-08 17:15:24

标签: javascript jquery

我有一个片段,我试图与之合作;我有一些产品可以抓住源代码,将其拆分为"?"并将其放入一个数组,然后替换" img.item-img"带有新链接的src。

但是,我没有使用循环或$(' this')来彼此区分它们。所以,如果我有三个项目,他们都会获得第一个src代码。

<script>
$( document ).ready(function() {
  $( "img.item-img" ).each(function() {
   str = $("img.item-img").attr('src');


  arr = str.split("?");
  var new_link = arr[0];

  $("img.item-img").attr('src', new_link);
    });
</script>

enter image description here

2 个答案:

答案 0 :(得分:0)

正如您已正确识别的那样,您需要使用this关键字作为$()函数的单个参数:

$('img.item-img').each(function() {
    var str      = $(this).attr('src'),
        arr      = str.split("?");

    $(this).attr('src', arr[0]);
});

或者,您可以在attr()函数中使用匿名函数调用:

$('img.item-img').attr('src', function() {  
    var arr = $(this).attr('src').split('?');
    return arr[0];
});

jsFiddle Demo(匿名函数返回)

答案 1 :(得分:0)

在每个回调函数中,您需要使用$(this)来引用当前正在循环的元素。

<script>
$( document ).ready(function() {
  $( "img.item-img" ).each(function() {
   str = $(this).attr('src');


  arr = str.split("?");
  var new_link = arr[0];

  $(this).attr('src', new_link);
    });
</script>