在Tumblr中加载更多笔记时运行函数

时间:2012-04-13 10:04:51

标签: javascript jquery tumblr

我制作了一个脚本来操作我主题中的音符的外观,这适用于随页面加载的音符。当试图加载更多笔记时出现问题 - 我需要重新运行我的脚本 - 我的问题是我该怎么做?

这是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的参考资料。

我很欣赏任何的想法,因为它们可能会引导我朝着正确的方向前进!

1 个答案:

答案 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的函数,一旦它们准备就绪,我将它们淡化它们。