Javascript 如何在JQuery中拆分字符串?

Javascript 如何在JQuery中拆分字符串?,javascript,jquery,html,css,split,Javascript,Jquery,Html,Css,Split,我有一个带有PNG图标的菜单。我想当用户悬停菜单项时,PNG图标变为GIF图标。我试过这个: 但我知道这不是正确的方式。我不能对每个菜单项都这样做。 这是我的HTML: <ul> <li> <a> item 1 <img src="image-path" /> </a> </li> <li> <a> item 2

我有一个带有PNG图标的菜单。我想当用户悬停菜单项时,PNG图标变为GIF图标。我试过这个:

但我知道这不是正确的方式。我不能对每个菜单项都这样做。 这是我的HTML:

<ul>
    <li>
        <a> item 1
        <img src="image-path" />
        </a>
    </li>
    <li>
        <a> item 2
        <img src="image-path" />
        </a>
    </li>
</ul>
问题:

我有以下图像路径:
。/images/icon1.png
,我想将其更改为以下路径:


。/images/icon1.gif
。/images/hover/icon1.gif

只需删除最后三个字符:

var oldSrc = this.src;
this.src = oldSrc.substr(0,oldSrc.length-3)+"png";
// or +"gif" to change to the GIF image.

只需删除最后三个字符:

var oldSrc = this.src;
this.src = oldSrc.substr(0,oldSrc.length-3)+"png";
// or +"gif" to change to the GIF image.

这不需要js

它可以简单地使用css来完成

image{background-image:url(../images/icon.png);}
image:hover{background-image:url(../images/icon1.png);}

这不需要js

它可以简单地使用css来完成

image{background-image:url(../images/icon.png);}
image:hover{background-image:url(../images/icon1.png);}

这样做成功了吗

$(this).attr('src', 'http://jsfiddle.net/img/logo-white.png'); 

这样做成功了吗

$(this).attr('src', 'http://jsfiddle.net/img/logo-white.png'); 
试一试

演示:

试试看


演示:

Hiral是正确的,您不需要JS

请尝试以下操作:

.icon {
    width: 32px; /* Replace with your own */
    height: 32px; /* Replace with your own */
}
.icon-house {
    background-image:url(../images/icon-house.png);
}
.icon-house:hover {
    background-image:url(../images/icon-house-hover.png);
}
.icon-car {
    background-image:url(../images/icon-car.png);
}
.icon-car:hover {
    background-image:url(../images/icon-car-hover.png);
}
/* etc... */
并将HTML更改为如下内容:

<ul>
    <li>
        <a href="index.html">Home
        <span class="icon icon-house"></span>
        </a>
    </li>
    <li>
        <a href="carsrock.html">Cars are awesome!
        <span class="icon icon-car"></span>
        </a>
    </li>
</ul>
或者,您可以使用spritesheet,这也会为您的用户节省时间,因为他们不需要下载许多单独的小图像


本文是相关的:

Hiral是正确的,您不需要JS

请尝试以下操作:

.icon {
    width: 32px; /* Replace with your own */
    height: 32px; /* Replace with your own */
}
.icon-house {
    background-image:url(../images/icon-house.png);
}
.icon-house:hover {
    background-image:url(../images/icon-house-hover.png);
}
.icon-car {
    background-image:url(../images/icon-car.png);
}
.icon-car:hover {
    background-image:url(../images/icon-car-hover.png);
}
/* etc... */
并将HTML更改为如下内容:

<ul>
    <li>
        <a href="index.html">Home
        <span class="icon icon-house"></span>
        </a>
    </li>
    <li>
        <a href="carsrock.html">Cars are awesome!
        <span class="icon icon-car"></span>
        </a>
    </li>
</ul>
或者,您可以使用spritesheet,这也会为您的用户节省时间,因为他们不需要下载许多单独的小图像


本文与此相关:

您可以使用正则表达式替换路径:

var newSrc = $(this).attr("src").replace(/\.png$/, ".gif");
$(this).attr("src", newSrc);

可以使用正则表达式替换路径:

var newSrc = $(this).attr("src").replace(/\.png$/, ".gif");
$(this).attr("src", newSrc);


最好使用CSS和精灵来实现这一点。JS的杀伤力太大了,实际上提供了更糟糕的用户体验(第二个加载时图像会闪烁)。我有很多菜单项和每个菜单项的特殊图标。或者你可以使用简单的javascript
replace
。即使我有10000个菜单项都带有图像和图标,我仍然会使用CSS。如果同时添加这么多事件处理程序,则会降低性能。如果您发现手工工作太多,请使用脚本生成所需的CSS。因此,
$(this.attr(“src”),$(this.attr(“src”).replace('.png','.gif')最好使用CSS和精灵来执行此操作。JS的杀伤力太大了,实际上提供了更糟糕的用户体验(第二个加载时图像会闪烁)。我有很多菜单项和每个菜单项的特殊图标。或者你可以使用简单的javascript
replace
。即使我有10000个菜单项都带有图像和图标,我仍然会使用CSS。如果同时添加这么多事件处理程序,则会降低性能。如果您发现手工工作太多,请使用脚本生成所需的CSS。因此,
$(this.attr(“src”),$(this.attr(“src”).replace('.png','.gif')我有许多项目菜单和每个项目的特殊图标。如果所有菜单项都有一个图标,则您的代码有效。您可以使用
sprite
。在这里阅读更多信息@Hiral这是一个可怕的资源。在其他地方,比如MDN,是否也有相同的文档记录?首先:这不是背景!!!!第二:我有很多东西!!!看这个,我想改变图像src路径,而不是图像背景路径。我有很多项菜单和每个项的特殊图标。如果所有菜单项都有一个图标,则您的代码有效。您可以使用
sprite
。在这里阅读更多信息@Hiral这是一个可怕的资源。在其他地方,比如MDN,是否也有相同的文档记录?首先:这不是背景!!!!第二:我有很多东西!!!看这个,我想改变图像src路径而不是图像背景路径这和他的问题一样,只是用单引号?我想你没抓住重点:这和他的问题一样,只是用了单引号?我认为你没有抓住要点:PI想要改变图像路径而不是背景path@Mohsen
span
s将有背景图像,这些图像将是您的图标,看起来完全相同。或者您不可能更改HTML?这是一个解决问题的方法。使用JQuery更容易,如果您有+30项,请考虑一下这一点!然后你需要创建+60类,我也不知道背景路径。我想改变图像路径而不是跨越背景path@Mohsen
span
s将有背景图像,这些图像将是您的图标,看起来完全相同。或者您不可能更改HTML?这是一个解决问题的方法。使用JQuery更容易,如果您有+30项,请考虑一下这一点!然后你需要创建+60类,我也不知道背景路径。这正是我想要的Hanks Arun,你的代码在工作,但我不明白,你能介绍一些资源吗?这正是我想要的Hanks Arun,你的代码在工作,但我不明白,你能介绍一些资源吗?