2012-05-21 84 views
2

我想添加一個mailto鏈接到靜態電子郵件地址在一個數據庫的結果列表中找到,使用JQuery。我能夠在網上找到以下摘錄的第一個結果,但它不適用於第一個結果之後的任何電子郵件地址。添加mailto鏈接到靜態電子郵件與JQuery

我很好奇爲什麼這是..以及如何讓它能夠將mailto:屬性應用到結果中找到的每個電子郵件地址。 :-)

當前代碼:

<script type="text/javascript"> 
$(document).ready(function(){ 
    var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/; 
    $("table td").filter(function() { 
     return $(this).html().match(regEx); 
    }).each(function() { 
     $(this).html($(this).html().replace(regEx, "<a href=\"mailto:$1\">$1</a>")); 
    }); 
}); 

謝謝!

+0

你是什麼意思的第一個結果?只有第一個'td'或者只有td中的第一封電子郵件? – gdoron

+0

對不起,沒有具體! - 只有第一個運輸署。 :-) – user1364769

+0

你可以在http://jsfiddle.net上設置DEMO嗎? – gdoron

回答

2

我不知道爲什麼它僅適用於第一場比賽,但你可以提高你的代碼是:

$(document).ready(function() { 
    var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/; 
    $("table td").filter(function() { 
     return this.innerHTML.match(regEx); 
    }).html(function(index, old) { 
     return old.replace(regEx, "<a href=\"mailto:$1\">$1</a>"); 
    }); 
});​ 
+0

謝謝你的迴應!我嘗試使用您的代碼,但它報告了以下語法錯誤: 「return old.replace(regEx,」$1「));」 - 至於我現有的代碼,它似乎在某些時候Javascript是'凍結',我不知道如何解決它,因爲它不報告任何問題。基本上我有一個PHP數據庫返回結果,JS應該添加鏈接到這些結果中的電子郵件地址。不幸的是,即使我添加console.log(「Message」);在我最初使用的代碼之後,它沒有顯示出來。有任何想法嗎? – user1364769

+0

@ user1364769。對不起,有無與倫比的'(',無論如何,從哪裏來的正則表達式?給我一個演示工作。 – gdoron

+0

嘿! 它工作時,我測試JSFiddle - http://jsfiddle.net/xV2HP/ 我在我的PHP頁面上使用相同的代碼,但奇怪的是隻有第一個結果是獲取鏈接。/我知道這一定很難排除故障,除非我給你訪問管理面板我我想知道你是否有任何想法讓我進一步解決這個問題。順便說一句,控制檯根本不報告任何錯誤。 – user1364769

3

或許它不再對您有用,但也許可能是某人:你要

:;

W3C School site

$(document).ready(function() { 
var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/g; 
$("table td").filter(function() { 
    return this.innerHTML.match(regEx); 
}).html(function(index, old) { 
    return old.replace(regEx, "<a href=\"mailto:$1\">$1</a>"); 
}); 

}):在正則表達式的末尾添加一個 'G'

注意:如果正則表達式不包含g修飾符(用於執行全局搜索),match()方法將只返回字符串中的第一個匹配項。

+2

我花了一段時間研究/ g解決了這個問題。在關於將靜態電子郵件/ URL轉換爲鏈接的許多jQuery博客文章中,還有其他幾篇關於此的文章。他們都使用正則表達式而沒有/ g。謝謝你。 – tatorface

相關問題