使用JQuery更改img src但保留路径信息完好无损?

时间:2010-03-17 18:32:09

标签: javascript jquery model-view-controller

我正在使用JQuery来切换图像src:

$("#myImg").attr("src", "../../new.gif");

注意新src上的相对路径。不幸的是,当我部署我的应用程序时,这不可移植。在我的MVC应用程序中,我使用的是ResolveUrl()方法,它将为我修复路径问题,因此它是可移植的,但现在我的JQuery图像src交换器无法正常工作,因为它现在将正确解析的路径切换为损坏的相对路径

<img id="myImg" src="<%=ResolveUrl("~/Images/transparent.gif")%>" />

我想要的是JQuery只需翻转实际文件名并保持路径不变。我的第一个想法是

// pseudocode javascript jquery on my thought on how to approach this prob
var oldFullPath = $('#myImg").GetTheImgSrc;
var newFileNameWithPathIntact = someRegexAddNewFileNameWithOldPath
$("#myImg").attr("src", newFileNameWithPathIntact);

但这对我来说似乎相当严重且不合适。谁有更好的方法?

3 个答案:

答案 0 :(得分:5)

你可以使用这样的东西:

var oldImage =$("#myImg").attr("src");
var imagePath = oldImage.slice(0, oldImage.lastIndexOf("/")) + "/new.gif";
$("#myImg").attr("src", imagePath ); 

编辑:更好的代码......:)

答案 1 :(得分:2)

您可以在javascript中使用resolveurl:

$("#myImg").attr("src", "<%=ResolveUrl("~/Images/new.gif")%>");

当然,假设您已在视图中包含了javascript。如果您要求此脚本必须存在于来自html请求的单独脚本文件中,那么您可以拥有一个 一个javascript文件的视图...并且只需在脚本中引用该URL SRC:

<script language="javascript" src="<%= Url.Action("MyMethod") %>" />

答案 2 :(得分:2)

为什么不将变量用于可用于这些类型情况的应用程序的根目录。

var root = "<%=ResolveUrl("~/") %>";

现在您可以轻松构建图像路径

$("#myImg").attr("src", root + "images/" + fileName);