如何改变元素"这个"在jQuery?

时间:2016-11-09 18:41:01

标签: javascript jquery html this

我有这段代码,它允许我通过点击来改变图像。

$('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

2 个答案:

答案 0 :(得分:0)

假设您的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')将选择一个数组所有图像。

答案 1 :(得分:0)

在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进行更精确的选择。