我想更改圖像的src。正則表達式在文件結尾之前添加和刪除文本
var string = "/images/myimage.png";
鼠標懸停我想補充_hover到MYIMAGE( 「/images/myimage_hover.png」) 和鼠標移開時我想刪除 「_hover」。
有沒有人有這個好的正則表達式?
感謝
我想更改圖像的src。正則表達式在文件結尾之前添加和刪除文本
var string = "/images/myimage.png";
鼠標懸停我想補充_hover到MYIMAGE( 「/images/myimage_hover.png」) 和鼠標移開時我想刪除 「_hover」。
有沒有人有這個好的正則表達式?
感謝
一個想法:
$('#imageid').hover(function() {
$(this).attr('src', function(i, val) {
return val.replace(/^(.+)(\..+)$/, '$1_hover$2');
});
},
function() {
$(this).attr('src', function(i, val) {
// assuming image names don't contain other `_hover` text
return val.replace('_hover', '');
});
});
更新:另外,還要檢查其他答案的表情,有些更復雜;),但使用attr
與回調是一個不錯的辦法。
編輯哎呀 - 這是 「SRC」 爲<img>
標籤,而不是 「HREF」
那麼你可以得到URL本身:
var imgUrl = $('#imageId').attr('src');
一旦你得到那個,你可以加把「_hover」與:
imgUrl = imgUrl.replace(/^(.*)\.png$/, "$1_hover.png");
和刪除它:
imgUrl = imgUrl.replace(/_hover\.png/, '.png');
因此,要設置的東西,正確徘徊:
$('#imageId').hover(
function() {
var $img = $(this);
if (!/_hover\.png$/.test($img.attr('src')))
$img.attr('src', $img.attr('src').replace(/^(.*)\.png$/, '$1_hover.png');
},
function() {
var $img = $(this);
$img.attr('src', $img.attr('src').replace(/_hover\.png$/, '.png');
}
);
我包含在第一功能的測試,試圖阻止「foo_hover_hover.png」從發生。
您要添加到$只在字符串的結尾相匹配。 – ThiefMaster 2011-01-31 16:29:01
是的,這是`.test`調用中的一個錯字 - 謝謝! – Pointy 2011-01-31 16:29:45
用於`_hover`測試。可能沒有必要,但應該意識到這種可能性。 – 2011-01-31 16:36:36
下面是這不管你的文件擴展名是什麼有效的解決方案:
yourString = yourString.replace(/^(.+)\.([^.]+)$/, '$1_hover.$2'); // do this onmouseover
yourString = yourString.replace(/^(.+)_hover\.([^.]+)$/, '$1.$2'); // do this onmouseout
演示:
js> var yourString = 'meow.test.png';
js> yourString = yourString.replace(/\.([^.]+)$/, '_hover.$1');
meow.test_hover.png
js> yourString = yourString.replace(/_hover\.([^.]+)$/, '.$1');
meow.test.png
js>
試試這個:
var testString = '"/images/myimage.png';
var regExp = /(.*)(\.)(.*)/g;
var testHover = testString.replace(regExp, "$1_hover$2$3")
alert(testHover); //Hover Image
alert(testString.replace("_hover", ""));//Regular Image
你有沒有考慮不存儲擴展與文件名?如果你的格式一致,或者如果你分開存儲擴展名,你可以讓你的生活更輕鬆。這樣,如果您的命名方案發生變化,您的正則表達式中斷的可能性就會降低。
i.e.
var str = "/images/myimage" + (is_selected ? "_hover" : "") + ".png"
+1只是爲了千鈞一髮「喵」:P - 在格蘭趣聞更多的貓(多cheezburgers過,當然) – ThiefMaster 2011-01-31 16:32:54