jquery attr 的字符串操作,对我不起作用

String manipulation of jquery attr, not working for me

 jQuery(document).ready(function($){

        var image = $('*[data-name="slider_image"]');

        image.each(function() {
            var source = $(this).find('img').attr('src');

            console.log(source);

            source.slice(0, -11);

            console.log(source);
        });

    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

我想获取每张图片的href属性,截取最后11个字符。我得到的输出在我应用切片之前和之后完全相同。在Jquery的主页上他们写道attr returns 的数据是一个字符串,所以我看不出问题是什么。我做错了什么?

您需要获取切片方法返回的值并赋值给变量以引用更新后的值。 slice 方法不修改原始字符串

jQuery(document).ready(function($) {

  var image = $('*[data-name="slider_image"]');

  image.each(function() {
    var source = $(this).find('img').attr('src');

    console.log(source);

    var modified = source.slice(0, -11);

    snippet.log(source + ':' + modified);
  });

});
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div data-name="slider_image">
  <img src="//placehold.it/64X64&text=text01234567890" />
</div>
<div data-name="slider_image">
  <img src="//placehold.it/64X64&text=text01234567890" />
</div>
<div data-name="slider_image">
  <img src="//placehold.it/64X64&text=text01234567890" />
</div>

source.slice(0, -11)

不修改原始输入source

尝试:

var tmp = source.slice(0, -11);
console.log(tmp);

而不是: source.slice(0, -11); console.log(source);

做:

    console.log(source.slice(0, -11));

或将其存储在变量中:

var output=source.slice(0, -11); console.log(output);