2016-11-09 53 views
-1

我有这段代码,它允许我通过单击它来更改图像。如何在jquery中更改元素“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

+1

请包括您的HMTL代码,以便我们可以看到您的上下文。即是你点击元素的孩子的图像?兄弟姐妹?都不是? – showdev

+0

您可以创建一个函数,然后将其上下文绑定到图像,或者将图像作为事件数据传递,或者使用jquery选择器(或dom api方法)选择图像, –

回答

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

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