無論何時添加新元素,您都必須觸發該功能。因爲您是知道何時添加新鏈接的最佳人選,所以您必須以這種方式設置腳本。
function setTargetBlank() {
$('a').each(function() {
if (location.hostname !== this.hostname) {
$(this).attr('target', '_blank');
}
});
}
// On load
$(function() {
setTargetBlank();
loadSomeContent(function() {
// And after it is loaded, trigger again the function
setTargetBlank();
});
});
如果你無法控制這些,你可以簡單地設置一個計時器,將始終觸發每隔幾秒鐘即功能:
// This is not really good for performance, but it will work
// It will trigger the function every 3 seconds
setInterval(setTargetBlank, 3 * 1000);
你是什麼意思的是ADDE元素動態地?你如何添加這些?當文檔準備就緒或加載時,加載和就緒函數都會運行一次,因此您的函數只能運行到第一次加載到DOM的元素。如果以某種方式你可以通過Jquery或JS添加新的鏈接,你需要再次添加屬性空白。從這個意義上來說更明確,我想我可以正確回答。 – DanielPanic
最好的解決方案將是*突變觀察者* https://stackoverflow.com/questions/13277212/mutation-observer-for-creating-new-elements –