2012-01-10 9 views
1

私は私のウェブサイトでこのようなアンカーを持っている:.replaceとアンカー

のjQueryを使用して
<a href="javascript:OpenNewWindow('/PhotoDetails.asp?ProductCode=ProductCode', 640, 480)" title=""> 

、どのように/ProductDetailsjavascript:OpenNewWindow('/PhotoDetailsを交換し、何も', 640, 480)を置き換えることが可能だろうか?

私は.replaceを試しましたが、コンテンツ内に一重引用符があるため、複雑です。

ありがとうございました。

+2

私はインラインJSを放棄し、変数を別のハンドラを使用します。 – Blazemonger

+0

@ mblase75 - これは理想的な解決策です。+1 – Hacknightly

+0

@ mblase75問題は全体的にインラインjsを取り除く方法です。 – henryaaron

答えて

1

私は正規表現の専門家ではありませんが、ここでは単一引用符を境界として使用する単純なindexOfソリューションです。

http://jsfiddle.net/CWjV5/3

$('a').each(function() { 
    var href = $(this).prop('href'); 
    href = href.substring(href.indexOf("'") + 1, href.lastIndexOf("'")); 
    href = href.replace('Photo', 'Product'); 
    $(this).prop('href', href); 
});; 
+0

しかし、Photoという言葉をProductという単語に置き換えなければなりません。 – henryaaron

+0

@ user1090389 - woops、didn 'そのビットに気づく。私の答えを更新しました。 – mrtsherman

+0

唯一の問題は、私はこのように実装することはできません、私のサイトに他のアンカーがあるということです。どのアンカーを修正したいのかを明確にするために、 'table.class1 tbody.class2 tr。 class3 td.class4 a 'と動作しませんでした。 – henryaaron