'替换'改变整个src,而不仅仅是结尾.为什么?
'Replace' changes entire src and not just the ending.. why?
情况:我有十个灰色的div(每个都有一个图像和文本)作为按钮。我希望按钮在激活时具有较暗的文本和较暗的图像。当单击活动按钮时,我希望它停用。我还希望它在另一个按钮激活时停用。
问题:当我替换图像源上的结尾时,它会将图像上的完整源更改为与活动源相同。。。其将所有其他图像改变为相同的图标。
jsfiddle:http://jsfiddle.net/messedUP90/gtf1dk0m/
警告:jsfiddle显示了我遇到的问题,所有其他图像都变为相同,但由于某些原因,活动图像不会改变颜色。它在Dreamweaver中运行良好,所以我不太担心。
$(document).ready(function(){
var x = 300;
$("[id^=pport]").click(function () {
var src = $('.butt', this).attr('src');
if($(this).hasClass('highlight')){
$(this).removeClass('highlight');
$('.butt', this).attr('src', src.replace(/_dark('.[^.]+)?$/, '_light$1'));
}
else{
$('.butt').removeClass('highlight');
$('.butt').attr('src', src.replace(/_dark('.[^.]+)?$/, '_light$1'));
$('.talk').fadeOut(x);
$(this).addClass('highlight');
$('.butt', this).attr('src', src.replace(/_light('.[^.]+)?$/, '_dark$1'));
}
});
});
问题正如您所描述的那样-您将每个图标的src
更改为您单击的图标的src
,只是将light
与dark
交换。
I.E.你很早就设置了var src = $('.butt', this).attr('src');
在任何情况下,您都不会将变量src
重新设置为任何其他值。
然后你$('.butt').attr('src', src.replace(/_dark('.[^.]+)?$/, '_light$1'));
这将使用butt
类的所有元素的src
属性设置为所单击图标的浅色版本。
这就是你的问题所在。。。
您不需要简单地尝试一次性更改图像,而是需要循环查看完整的图像集:
$('.butt').each( function( index ) {
if ( $(this).attr('src') ) {
$(this).attr('src', $(this).attr('src').replace(/_dark('.[^.]+)?$/, '_light$1'));
}
});
Fiddle(工作,但有与您相同的光/暗限制)在这里:http://jsfiddle.net/gtf1dk0m/1/
$('.butt').removeClass('highlight');
从具有CCD_ 11类的每个元素中移除CCD_。属性替换也是如此。您需要使用$(this)
。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 事件为所有项目而不仅仅是当前项目激发
- 在加载时显示,而不仅仅是在选中时显示
- 删除 HttpCookie 不仅仅是它的值
- 脚本选择所有输入,而不仅仅是复选框
- for 循环中的 if 语句都执行,而不仅仅是一个
- 当将函数传递给方法时,为什么使用匿名函数容器而不仅仅是原始函数有效
- .slideup()删除整个ul,而不仅仅是嵌套的li
- jQuery隐藏所有trs或td,而不仅仅是一个
- 使用Maven压缩所有内容,而不仅仅是源目录
- 从数组中删除双值,而不仅仅是javascript中的重复值
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- Jquery Slider-获取滑块的每个数值?不仅仅是在mouseout上
- 我如何让jQuery在Facebook发布自动加载时做一些事情,而不仅仅是在页面加载时
- 如何使元素的宽度和高度为页面(文档)的100%,而不仅仅是窗口(浏览器)
- 在 Magnific 弹出窗口中打开所有图像,而不仅仅是发布图像
- 有没有办法使非html5支持浏览器支持html5,而不仅仅是html5标记,html5 api也是如此
- 之前每个测试都会调用每个测试,而不仅仅是一次
- '替换'改变整个src,而不仅仅是结尾.为什么?