我知道这是一个非常基本的问题。我试图获得" src"作为变量并将其设置为最接近" href"。
小提琴: http://jsfiddle.net/vitorboccio/EUpRg/1/
HTML:
<div id="instafeed">
<a href="javascript:void(0);">
<img src="http://scontent-a.cdninstagram.com/hphotos-xaf1/t51.2885-15/915462_665185033531202_40962267_s.jpg" />
</a>
<a href="javascript:void(0);">
<img src="http://scontent-b.cdninstagram.com/hphotos-xpf1/t51.2885-15/10299842_1424124577859264_383342252_s.jpg" />
</a>
</div>
JS:
function changeURL () {
//var srcImg = this.src;
var srcImg = $(this).attr("src");
console.log(srcImg);
$("#instafeed").closest('a').attr('href', srcImg);
}
$("#instafeed").on('click', 'img', function () {
changeURL();
});
感谢
答案 0 :(得分:2)
changeURL没有接收任何参数,也无法猜测你正在寻址什么图像。
试试这个
function changeURL (imgElement) {
var srcImg = imgElement.attr("src");
console.log(srcImg);
imgElement.closest('a').attr('href', srcImg);
}
$("#instafeed").on('click', 'img', function () {
changeURL(jQuery(this));
});
答案 1 :(得分:1)
删除包含对changeURL
的调用的匿名函数 - 它打破了jQuery的自动行为,将被调用函数中的this
设置为被点击的元素:
$('#instafeed').on('click', 'img', changeURL);
然后,您还需要在处理程序中引用该被单击的元素,而不是#instafeed
:
function changeURL() {
$(this).closest('a').prop('href', this.src);
};
注意:我已将$(this).attr('src')
更改为this.src
。唯一的区别是后者将是一个完全限定的绝对URL,而前者可能是相对的。我还使用了.prop
代替.attr
来设置属性,因为这是更简单的方法来更改元素的属性,因为jQuery 1.6
此外,如果<a>
元素始终是直接祖先,那么最佳解决方案就是这样,通过直接DOM操作消除原始代码中对jQuery的所有五次调用:
function changeURL() {
this.parentNode.href = this.src;
};
答案 2 :(得分:0)
查看代码后,我认为您正在尝试获取图像src并将其设置为最接近的<a>
标记中的href。如果是,请从<a>
<img>
function changeURL () {
var srcImg = $(this).attr("src");
console.log(srcImg);
$(this).closest('a').attr('href', srcImg);
// the $(this) is referring to <img>
}
$("#instafeed").on('click', 'img', changeURL);
答案 3 :(得分:0)
我将JS更改为:
function changeURL () {
var srcImg = $(this).attr("src");
console.log(srcImg);
$(this).closest('a').attr('href', srcImg);
}
$("#instafeed").on('click', 'img', changeURL);
changeURL
绑定的匿名函数,现在直接绑定到changeURL
方法,从而保留this
引用。.closest()
来自img
代码的#instafeed
来电,而不是{{1}} 答案 4 :(得分:0)
你可以尝试
function changeURL (imgElement) {
var srcImg = imgElement.attr("src");
console.log(srcImg);
$("#instafeed").find('a:eq(0)').prop('href', srcImg);
}
$("#instafeed").on('click', 'img', function () {
changeURL($(this));
});
[Demo][1]