Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法读取未定义的属性'replace‘

无法读取未定义的属性'replace‘
EN

Stack Overflow用户
提问于 2014-12-05 11:43:58
回答 2查看 18.7K关注 0票数 0

我有一个简单的带有图片的菜单。图像源的变化取决于查看者的操作(鼠标悬停、单击、不显示任何内容)。当单击另一个图像时,我在将非活动图像源重置为默认值时遇到问题?

(单击) button1S.jpg -> button1S_active.jpg

我已经尝试使用.not(这).replace,但我得到一个错误,根据chrome“无法读取属性‘替换’的未定义”。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<head>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
</head>

<body>
<img class="logo" src="logo.jpg"><br>
<img class="menu_btn" src="button1S.jpg"><br>
<img class="menu_btn" src="button2S.jpg"><br>
<img class="menu_btn" src="button3S.jpg"><br>
<img class="menu_btn" src="button4S.jpg">
</body>

<script>
$("img.menu_btn").hover(

function () {
    this.src = this.src.replace('.jpg', '_hover.jpg');
    $(this).addClass('hovered');
},

function () {
    this.src = this.src.replace('_hover.jpg', '.jpg');
    $(this).removeClass('hovered');
});

$('img.menu_btn').click(

function () {
    var unactive = $('img.menu_btn').not(this);
    unactive.src = unactive.src.replace('_active.jpg', '.jpg'); //without this, it works but _active.jpg isn't removed when unactive.
    unactive.removeClass("active");
    $(this).addClass('active');
    this.src = this.src.replace('_hover.jpg', '_active.jpg');
    alert(this.src);
});

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 11:46:36

问题是unactive是一个jQuery对象,而不是一个dom元素引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("img.menu_btn").hover(function() {
  if ($(this).hasClass('active')) {
    return;
  }
  this.src = this.src.replace('normal', 'hover');
  $(this).addClass('hovered');
}, function() {
  if ($(this).hasClass('active')) {
    return;
  }
  this.src = this.src.replace('hover', 'normal');
  $(this).removeClass('hovered');
});


$('img.menu_btn').click(function() {
  var unactive = $('img.menu_btn').not(this);
  unactive.attr('src', function(i, src) {
    return src.replace('active', 'normal')
  });
  unactive.removeClass("active");
  $(this).addClass('active');
  this.src = this.src.replace('hover', 'active');
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img class="menu_btn" src="//placehold.it/64X32&text=normal" />
<br/>
<img class="menu_btn" src="//placehold.it/64X32&text=normal" />
<br/>
<img class="menu_btn" src="//placehold.it/64X32&text=normal" />
<br/>
<img class="menu_btn" src="//placehold.it/64X32&text=normal" />
<br/>

票数 1
EN

Stack Overflow用户

发布于 2014-12-05 14:04:28

在我的评论之后,您可以使用单个类和称为"sprites“的技术来替换所有这些”图像URL的修改“。

sprite基本上是一个包含多张图片的图像文件。我的JSFiddle中使用的代码如下所示:

JSFiddle: http://jsfiddle.net/TrueBlueAussie/7v1L2yqd/2/

可以通过更改样式中的图像偏移来参照它们。在我的示例中,它只是简单地添加和删除了一个hover样式,它在CSS样式中会导致背景图像偏移。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('.menu_btn').hover(function () {
    $(this).addClass('hover');
}, function () {
    $(this).removeClass('hover');
});

CSS:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.menu_btn {
    width: 44px;
    height: 44px;
    background: url(http://www.w3schools.com/css/img_navsprites.gif) 0 0;
}
.hover {
    background-position: -46px 0;
}

这里有一个方便的参考:http://www.w3schools.com/css/css_image_sprites.asp

如果sprite包含所有的图标,您可以将它们偏移到它们的基础图像,而.hover类将只移动水平位置:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27315193

复制
相关文章
opencv无法读取图片_opencv无法读取图片
使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。
全栈程序员站长
2022/11/04
2.4K0
Java-方法重载时 调用未定义的对象属性
public class TestWayReload { int id; String name; String pwd; public TestWayReload(){ System.out.println(“Hellow World!”); System.out.println("################"); }
Fisherman渔夫
2019/07/30
5.5K0
Mac无法读取硬盘
问题描述: 由于没有弹出移动硬盘,就拔出来了。导致再插入硬盘,电脑也无法识别了。 步骤: 1.查看一下硬盘信息 画圈的就是我的硬盘。 2.将这个硬盘挂载 sudo diskutil mount /dev/disk2s1 然后需要输入的就是你的密码(开机密码) 可以看到,已经挂载成功了。
用户4793865
2023/01/12
1.1K0
读取项目属性文件的几种方式
项目中会把一些环境变量、公共属性配置到属性文件中,总结了一些工程加载属性文件的方式。
用户2146693
2019/08/08
1.7K0
logback.xml读取spring的属性
因为logback.xml和logback-test.xml会被logback组件直接读取,所以如果要交给spring管理,需要
十毛
2019/08/03
5.7K0
spring-PropertyPlaceholderConfiger读取属性
spring在读取配置文件的时候,我们时常使用@Value注解来注入配置文件中的配置,在配置文件中也可以通过${}的方式来引用已经申明的配置,这是依靠Spring提供的PropertyPlaceholderConfigure来实现的。
leobhao
2022/06/28
6200
python读取图片属性信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。
全栈程序员站长
2022/10/01
2.1K0
python读取图片属性信息
vue在IE下无法正常工作,Promise未定义?
用vue写了一个日历组件,在Firefox、Edge、Chrome以及360等浏览器极速模式中运行一切正常,如图:
Yiiven
2022/12/15
4.2K0
vue在IE下无法正常工作,Promise未定义?
Spring Boot读取配置属性的常用方式
在Spring Boot项目中我们经常需要读取application.yml配置文件的自定义配置,今天就来罗列一下从yaml读取配置文件的一些常用手段和方法。
码农小胖哥
2020/07/07
3.1K0
什么,GitHub网站的文件你无法读取
这个时候很多R语言小白会下意识的以为是自己的R语言代码有问题,其实如果你仔细 看报错,就应该是明白网络有问题,因为中国大陆绝大部分地区访问GitHub其实是很困难的。
生信技能树
2021/07/06
2.4K0
相机SD卡无法读取提示格式化 相机SD卡无法读取怎么修复
相机SD卡中储存着的照片和视频,承载着我们美好的回忆。因为相机SD卡的容量有限,我们会定期对SD卡中的数据进行云盘备份,然后清理相机SD卡中的数据。在打开相机SD卡时,可能会遇到SD卡无法读取的情况。那么,相机SD卡无法读取提示格式化,相机SD卡无法读取怎么修复?今天作者就和大家介绍一下这两个问题。
用户9208731
2023/04/18
4.2K1
相机SD卡无法读取提示格式化 相机SD卡无法读取怎么修复
C#反射读取和设置类的属性
http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html
跟着阿笨一起玩NET
2018/09/19
2K0
自定义支持读取XML属性的View
在Android中,添加一个View很简单,简单的你可以简简单单地使用xml和一部分简单的java代码就可以搞定。 比如这样
技术小黑屋
2018/09/04
2.1K0
【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )
发送数据成功 : Android 应用 向 BLE 硬件设备发送数据 , 成功 ;
韩曙亮
2023/03/28
1.5K0
Spring Boot中读取配置属性的几种方式
  本文介绍Spring Boot中读取配置属性的几种方式,项目示例中用到的application.yml和application.properties定义如下:
happyJared
2018/09/20
8.3K0
Spring Boot中读取配置属性的几种方式
39 - 读取XML节点和属性值
在当前目录下有一个products.xml 文件,要求读取该文件中products节点的所有子节点的值以及子节点的属性值 <!-- products.xml --> <root> <products> <product uuid="1234"> <id>10000</id> <name>iphone9</name> <price>9999</price> </product> <product uuid="4321"> <id>20000</id> <name>
ruochen
2021/05/25
2.5K0
39 - 读取XML节点和属性值
浅析 replace into
在笔者支持业务过程中,经常遇到开发咨询replace into 的使用场景以及注意事项,这里做个总结。从功能原理,性能和注意事项上做个说明。
用户1278550
2022/12/07
2K0
点击加载更多

相似问题

无法读取未定义的属性'replace‘

137

ngdocs:无法读取未定义的属性“”replace“”

114

TypeError:无法读取未定义的属性“”replace“”

50

"TypeError:无法读取未定义的属性'replace‘“

28

节点: TypeError:无法读取未定义的属性“”replace“”

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文