2011-03-31 91 views
1

我想找到某些div內的所有圖像,並用其他代碼替換圖像標籤。替換此:jQuery使用正則表達式選擇並替換鏈接

<div id='sd'> <img src="/images/panorami/53.jpg"> <img src="/images/panorami/other.jpg"> </div>

有:

<div id='sd'> <a title="" rel="lightbox[images]" href="/images/panorami/53x.jpg"> <img src="/images/panorami/53.jpg"></a> <a title="" rel="lightbox[images]" href="/images/panorami/otherx.jpg"><img src="/images/panorami/other.jpg"></a> </div>

這可怎麼用jQuery做?

回答

4
$('#sd img').wrap(function() { 
    return $('<a />', { 
     title: '', 
     rel: 'lightbox[images]', 
     href: this.src 
    }); 
}); 

Demo

+0

尼斯 - 我真的需要更頻繁地使用該回調。 – karim79 2011-03-31 11:08:18

+0

As @ [Viacheslav Molokov](http://stackoverflow.com/users/226367/viacheslav-molokov)[指出](http://stackoverflow.com/questions/5498730/jquey-selecting-whit-regular-表達式和替換鏈接/ 5498901#5498901),此解決方案不會將'x'添加到鏈接中的文件名。將'href:this.src'替換爲'href:this.src.replace(/(\.[^.]+)$/ i,'x $ 1')'得到想要的結果。 – jensgram 2011-03-31 12:22:56

1

基於@jensgram答案,但更改的鏈接像問題:

$(function() { 
    $('#sd img').wrap(function() { 
     fixed_url = $(this).attr('src').replace(/(\.[a-zA-Z]+)$/, 'x$1'); 
     return $('<a />', { 
      title: '', 
      rel: 'lightbox[images]', 
      href: fixed_url 
     }); 
    }); 
}); 

http://jsfiddle.net/sUsmA/1/

+0

+1沒有注意到這種差異。 'href'可以直接設置:'href:this.src.replace(/(\。[a-z] +)$/i,'x $ 1')'但是這是一個口味問題:) – jensgram 2011-03-31 12:20:54