我制作了一个脚本来操作我主题中的音符的外观,这适用于随页面加载的音符。当试图加载更多笔记时出现问题 - 我需要重新运行我的脚本 - 我的问题是我该怎么做?
这是tumblr在加载更多笔记时运行的脚本(这是一个onclick事件):
if (window.ActiveXObject) var tumblrReq=new ActiveXObject('Microsoft.XMLHTTP');
else
if(window.XMLHttpRequest) var tumblrReq=new XMLHttpRequest();
else return false;
tumblrReq.onreadystatechange = function () {
if (tumblrReq.readyState==4) {
var notes_html = tumblrReq.responseText.split('<!-- START '+'NOTES -->')[1].split('<!-- END '+'NOTES -->')[0];
if (window.tumblrNotesLoaded)
if (tumblrNotesLoaded(notes_html)==false)
return;
var more_notes_link=document.getElementById('more_notes_20767443750');
var notes = more_notes_link.parentNode;
notes.removeChild(more_notes_link);
notes.innerHTML+=notes_html;
if (window.tumblrNotesInserted)
tumblrNotesInserted(notes_html);
}
};
tumblrReq.open('GET','/notes/20767443750/iRC0TZaQr?from_c=1334227072',true);
tumblrReq.send();
return false;
我要做的是创建一个函数,在每个加载更多音符的实例中调用,将这些新音符作为变量,在它们上运行一个函数,用符号替换一些文本,然后将它们附加到现有的Isotope设置,就像使用Infinite Scroll加载新页面一样。
This link here是我正在撰写的博客中的永久链接页面之一,您可以在其中查看我正在谈论的内容。 Here是tumblr docs的参考资料。
我很欣赏任何的想法,因为它们可能会引导我朝着正确的方向前进!
答案 0 :(得分:2)
嗯,事实证明我自己是朝着正确的方向前进,并且制作了一个过于繁琐的代码,但它现在有效,所以我将详细说明如何,以便其他人可以使用这些信息:
function tumblrNotesLoaded(notes_html){ //this will be called when loading notes
//code goes here!
};
我把它放在任何其他函数之外,我认为这个术语是'在全局命名空间',因此我对加载新笔记时需要调用的每个函数都做了。
要将它附加到Isotope墙(我想它也适用于砌体,更改了一些关键字)我将其添加到代码中:
var newtmbnotes = $("li.note:not(.isotope-item)");
这将选择Isotope尚未定位的所有音符元素(该插件将“同位素项”类添加到它处理的每个项目中)。这使得选择仅包含新音符。
$('ol.notes').isotope( 'appended', newtmbnotes, introNote() );
最后这个,它附加了之前定义的新笔记,然后运行一个名为introNote的函数,一旦它们准备就绪,我将它们淡化它们。