使用jQuery更改图像src
我正在替换旧应用程序中的一些代码,而不是通过节点的id获取节点,而是通过节点的类获取节点。因为在原生JS中没有通过类获取节点的好方法,所以我使用jQuery来实现,但是新代码并没有改变img src 有明显的原因吗 旧代码:使用jQuery更改图像src,jquery,dom,image,Jquery,Dom,Image,我正在替换旧应用程序中的一些代码,而不是通过节点的id获取节点,而是通过节点的类获取节点。因为在原生JS中没有通过类获取节点的好方法,所以我使用jQuery来实现,但是新代码并没有改变img src 有明显的原因吗 旧代码: var gamearea = document.getElementById('gamearea') var images = gamearea.getElementsByTagName('img'); images[place] = "pics/" + id + ".pn
var gamearea = document.getElementById('gamearea')
var images = gamearea.getElementsByTagName('img');
images[place] = "pics/" + id + ".png";
新代码:
$('.gamearea').children('img').eq(place).src = "pics/" + id + ".png";
尝试:
或:
$'.gamearea'.children'img'.eqplace返回元素的jQuery数组,您不能直接访问此对象上的DOM属性。在本例中,您需要使用[0]第一个元素来提取DOM元素,或者使用jQueryAPI中的方法
此外,如果要替换getElementById'gamearea',您可能想使用$'gamearea'而不是$'.gamearea' .eq返回一个jQuery对象。如果要直接使用.src属性,则需要一个DOM元素,而不是使用.get而不是.eq的jQuery对象,如下所示:
$('.gamearea').find('img').get(place).src = "pics/" + id + ".png";
我还切换到了.find而不是.children,以便与原始版本中的.getElementsByTagName更加等效,而且由于您没有向我们显示HTML,因此这似乎是一个更安全的假设。我知道这是一个旧答案,但这肯定是一个更好的方法
function updateGameAreaImages(id, place) {
var gameareas = toArray(document.getElementsByClassName('gamearea'));
gameareas.forEach(updateImages);
function updateImages(elem) {
var images = elem.getElementsByTagName("img");
images[place].src = "pics/" + id + ".png";
}
}
function toArray(obj) {
var arr = [];
for (var i = 0, len = obj.length; i < len; i++) {
arr[i] = obj[i];
}
return arr;
}
$('.gamearea').children('img').attr("src", "pics/" + id + ".png");
有一些很好的方法可以通过类名而不使用选择器来获取元素。你只是近视眼。正如David所说,请发布您的HTML,以便发布更好的解决方案。@Matt:虽然确实有一些好方法,例如document.getElementsByClassName,但jQuery确实使跨浏览器更容易,补偿了或。
function updateGameAreaImages(id, place) {
var gameareas = toArray(document.getElementsByClassName('gamearea'));
gameareas.forEach(updateImages);
function updateImages(elem) {
var images = elem.getElementsByTagName("img");
images[place].src = "pics/" + id + ".png";
}
}
function toArray(obj) {
var arr = [];
for (var i = 0, len = obj.length; i < len; i++) {
arr[i] = obj[i];
}
return arr;
}
$('.gamearea').children('img').attr("src", "pics/" + id + ".png");