2012-02-15 71 views
0

我有這樣的HTML:在window.open函數,前綴的URL的jQuery

<a href="#" onclick="window.open('TrackPackage.asp?ID=4', '', 'settings');">Track Your Package »</a> 

有人在這個網站能爲我提供的腳本與域http://www.example.com/這裏前綴的URL腳本:

$(document).ready(function(){ 
$('a[onclick^="window.open(\'TrackPackage.asp"]').attr('onClick', $('a[onclick^="window.open(\'TrackPackage.asp"]').attr('onClick').replace("window.open('", "window.open('http://www.example.com/")); 
}); 

不過,我有這樣一個小麻煩:
第一個問題是哪裏有元素的多個實例。這裏是一個小提琴:http://jsfiddle.net/VMmZx/
而不是一個錨正在ID=4ID=5按預期簽署,他們都與ID=4簽署。
的想法是,每個window.open功能應該與http://www.example.com前綴然而,URL的其餘部分應保持不變...

我遇到的第二個問題是,當該元素沒有在頁面上存在中,jQuery的其餘部分失敗...
這裏還有一個小提琴:http://jsfiddle.net/VPf32/
<a>應該得到的類foo,但由於該元素不存在於頁面上,jQuery的不執行。
由於JavaScript被包含在ASP.NET服務器的HTML模板中,因此會產生很多問題。

我希望我已經清楚,你可以幫助我。 謝謝。

回答

0

你爲什麼要做這樣的點擊甚至內聯?

<a href="/path/to/file.html" target="_blank">Link Text</a> 

然後:我只想輸出一樣的鏈接

$('a[target=_blank]').click(function(){ 
    var prefix = 'http://domain.com'; 
    window.open(prefix + $(this).attr('href')); 
}); 
+2

不幸的是,HTML不在我的控制之下。我已經無數次聽到過同樣的事情,很久以前就會這樣做了...... – henryaaron 2012-02-15 03:34:51

+0

啊,只有權限在前端的煩惱。 – prodigitalson 2012-02-15 03:35:58

+0

Yesss ...它殺了我。也許有一天,我將能夠編寫自己的軟件;) – henryaaron 2012-02-15 03:44:27

2

您可以使用.each()遍歷每個匹配的元素,並逐一更改它們:

$('a[onclick^="window.open(\'TrackPackage.asp"]').each(function(index, element) { 
    element = $(element); 
    element.attr('onclick', element.attr('onclick').replace(/open\('/, 'open(\'http://www.example.com/')); 
});​ 

不過,我不認爲使用鏈接與#一個hrefonclick打開一個窗口,是語義因爲它可能是。如果可能的話,請嘗試更改的標記,以這樣的:

<a href="TrackPackage.asp?ID=4" target="_blank">Track Your Package »</a> 

現在,如果有人好奇它會導致他們的瀏覽器可以顯示有用的在狀態欄中的東西,當你在它懸停。

如果您需要進一步調整行爲,請添加一個類並綁定到click事件。當他們點擊時,阻止默認操作並自己打開窗口,就像以前一樣。

+0

這實際上是讓其他的問題對我來說...它無法計算未定義功能。原來的jQuery的作品...我需要另一個腳本。 – henryaaron 2012-02-15 03:42:29

+0

不幸的是,HTML不在我的控制之下。我已經多次聽到同樣的事情,並且很久以前會這樣做...... – henryaaron 2012-02-15 03:43:10