【问题标题】:Dynamically Change the href path of image using jquery使用jquery动态更改图像的href路径
【发布时间】:2013-07-05 08:47:03
【问题描述】:

我不确定是否可能,但如果可能的话,有人知道建议我。

例如:

<a href="image/image.jpg"><img src="image/image.jpg" alt="image"/></a>

在此如何使用 jquery 动态地将 href 路径更改为另一个图像。 即,

<a href="image/img.jpg"><img src="image/image.jpg" alt="image"/></a> like this.

已编辑: 如果

<a href="#"><img src="image/image.jpg"/></a>
<a href="http://stackoverflow.com"><img src="image/image.jpg"/></a>
<a href="image/image.jpg"><img src="image/image.jpg"/></a>

我怎样才能改变这个href attr 这个条件只有在href链接的锚标签包含图像时才应该满足。那么锚文本应该是img标签。

这是 JSFIDDLE: http://jsfiddle.net/HMsSE/9/ 任何建议将不胜感激。

谢谢, 维姬

【问题讨论】:

  • 你想通过点击或加载来改变它吗?
  • 点击图片应该可以改变路径
  • 好的,检查my answer

标签: javascript jquery html image jquery-plugins


【解决方案1】:

您可以尝试使用 .attr() 函数将 href 设置为新值:

$('a[href="image/image.jpg"]').attr('href', 'image/img.jpg');

当然,如果你给锚一个唯一的 id 可能会更容易:

<a href="image/image.jpg" id="myLink"><img src="image/image.jpg" alt="image"/></a>

这样您可以更轻松地选择它:

$('#myLink').attr('href', 'image/img.jpg');

【讨论】:

  • 感谢您的回复。仅当 标签存在时才更改 href 路径我该怎么做
  • 同理:$('img[src="image/image.jpg"]').attr('src', 'image/img.jpg');.
  • 谢谢。我需要详细解释。检查锚文本是否包含 标记的条件,那么只有它应该执行。?有没有可能
  • 是的,您可以为您的 img 提供一个唯一的 ID,如我的回答中所示,然后创建一个 ID 选择器:$('#myImage')
  • 动态是什么意思?如果您有多个 &lt;img&gt; 元素怎么办?您想替换他们所有的src 属性吗?如果是这样,那么您可以简单地使用$('img').attr(...)。但这将再次替换所有图像。
【解决方案2】:

您也可以尝试使用.prop()

$('a').prop('href', 'image/img.jpg')

在您的 cmets 中,当 href 的标签具有子元素 img 时,您正尝试更改它。如果是这样,

if($('a').find('img').length) {  // it return the no. of img tag within a
   $('a').prop('href', 'image/img.jpg');
}

【讨论】:

  • @vicky 你可以像这样使用.find() if( $('a').find('img').length )
  • 感谢您的回复。抱歉问了多个问题。上面的代码是用于以子为 img 的锚标签,也可以检查以 href 作为图像 src 然后子作为 img 标签的锚标签
  • @vicky 如果我正确理解了您的问题,那么可能。你想检查if( href of a is img src &amp;&amp; $('a').find('img').length)。如果我错了,请纠正我。
  • @vicky 好的,我明白了你的问题。我们可以有这样的条件if($('a').attr('href').indexOf('.jpg') &gt; 0)
  • @vicky 你可以使用这个var ext = $('a').attr('href').split('.').pop(); console.log(ext); 来获取href的ext。
【解决方案3】:

只需使用attr 函数

$('a').attr('href','image/img.jpg');

您也可以通过 id 更改它,这将更有用

<a id="myLink" href="image/image.jpg"><img src="image/image.jpg" alt="image"/></a>

$('#myLink').attr('href','image/img.jpg');

【讨论】:

  • 感谢您的回复,我如何检查锚文本是否包含图像标签
【解决方案4】:

按照 topicstarter 的要求,点击图片时会执行更改

$('img').click(function() {
    $(this).parent('a').attr("href","image/img.jpg");
});

如果你也想检查href,你必须使用条件

$('a').click(function() {
    event.preventDefault();
    if ($(this).attr('href').search('jpg')!=-1)
        $(this).attr("href","image/img.jpg");
});

另外,我必须提到 &lt;img&gt;&lt;a&gt; 并不总是响应点击

哦,是的,fiddle UPD我不知道我怎么能忘记过滤器

$('a').click(function() {
    event.preventDefault();
    $(this).filter('[href*=jpg],[href*=png],[href*=gif]').attr("href","image/img.jpg");
});

new shorter demo

【讨论】:

  • @vicky 没问题,here we are,但我的代码也必须更新一点
  • 谢谢 如何检查相应的 png 或 jpg 或 gif
  • @vicky 只需使用 search('jpg|png|gif') 代替
  • 感谢您的回复,但在您的小提琴中,第三个图像路径是锚定标签 href image/image.jpg 并且不会出现 image/img.jpg
  • @vicky 可能我听不懂你,你是sure 还是没变?
【解决方案5】:

您也可以在不包括 jQuery 的情况下使用本机 Javascript 来执行此操作

element.setAttribute(attributename,attributevalue)

希望这会对你有所帮助。

【讨论】:

  • 我觉得应该是document.getElementsByTagName("tagName").setAttribute("attributename","attributevalue")
  • 我写了一个通用语法。您指定 getElementByTagName。开发者可能会使用更多方法来获取 Id 等元素。
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多