2015-03-30 50 views

回答

0

這似乎是一個簡單的答案:

function replaceLinkText(tweetCode) { 
    var parsed = $('<div>' + tweetCode + '</div>'); 
    $(".tweet > a", parsed).each(function(eli, elel) { 
     $(elel).text(elel.href); 
    }); 
    return parsed.html(); 
} 
+0

parsed.html() - undefined不是函數。這是jQuery方法在我嘗試它們時所做的。直接訪問屬性是好的。 – Interlated 2015-03-30 20:55:26

+0

我剛剛擺脫了對'$ .parseHTML()'的調用。它返回一個數組而不是一個jQuery對象,我不需要它。 – Barmar 2015-03-30 20:56:32

0

這是我的解決方案。從回調中解析HTML字符串對於stackoverflow來說似乎是唯一的。我花了一段時間嘗試使用jQuery方法,而不是直接訪問對象屬性。 2個嵌套循環也減少了腳本的可移植性。

function replaceLinkText(tweetCode) { 
    var parsed = $.parseHTML(tweetCode); 
    var outputString = ""; 
    $.each(parsed, function(i,el) { 
     if (el.className == "tweet") { 
      $.each(el.children, function(eli, elel) { 
       if (elel.nodeName == 'A') { 
        elel.textContent = elel.href; 
       } 
      }); 
     } 
     outputString += el.outerHTML; 
    }); 

    return outputString; 
} 
+0

這是一個答案或問題的一部分?看起來你應該能夠使用'$(「.tweet>」,解析的).each()'來訪問微博代碼中的所有鏈接。 – Barmar 2015-03-30 20:23:31

+0

你問一個問題或回答它? – 2015-03-30 20:31:25

+0

'innerText'也不能移植到Firefox。 'textContent'是標準屬性。 – Barmar 2015-03-30 20:31:45