【问题标题】:How to change element "this" in jQuery?如何在 jQuery 中更改元素“this”?
【发布时间】:2016-11-09 18:41:00
【问题描述】:

我有这段代码,我可以通过点击它来更改图像。

$('img').click(function(){
    var src = this.src;
    this.src = src.indexOf('_b.jpg') == -1 ? src.replace('.jpg','_b.jpg') : src.replace('_b.jpg','.jpg');
});

我宁愿点击另一个元素仍然能够更改图像。当我更改$('myelement') 中的部分时,我需要确保var src = this.src; 部分引用图像。

我需要在什么地方更改this

【问题讨论】:

  • 请附上您的 HMTL 代码,以便我们查看您的上下文。 IE。图像是您单击的元素的子元素吗?兄弟姐妹?都没有?
  • 您可以创建一个函数,然后将其上下文绑定到图像,或者将图像作为事件数据传递,或者使用 jquery 选择器(或 dom api 方法)选择图像
  • 这是否 == $(this)?

标签: javascript jquery html this


【解决方案1】:

假设您的 HTML 中有 只有一个 img 标记:

$('myelement').click(function(){
  var src = $('img').attr('src');
  var newSrc = src.indexOf('_b.jpg') == -1 ? src.replace('.jpg','_b.jpg') : src.replace('_b.jpg','.jpg');
  $('img').attr('src', newSrc);
});

但通常最好使用更具体的选择器进行选择,例如id 或一些独特的class 属性,因为您可能希望文档中有更多图像 - 然后$('img') 将选择所有图像的数组。

【讨论】:

    【解决方案2】:

    在javascript中this指的是当前对象,换句话说contex。一般的做法是将上下文存储到一个变量中,这样当上下文发生变化时,比如说一个 dom 事件,你仍然可以到达它。

     // stores context into that variable
     var that = this;
    

    但显然你的问题与this 无关。如果您需要从另一个元素更改图像属性,则需要选择 img 标签并对其进行操作。

     $('.another-element').click(function(){
         var newSrc = 'Here goes the new scr attribute';
         $('img').attr('src',newScr);
     });
    

    您可以使用 id 或 class 进行更精确的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多