该网站是使用ExpressionEngine(2.8.1)构建的,但由于要共享的内容是通过AJAX加载的,我决定在ShareThis网站上使用生成的“网站”代码而不是可能过时的EE附加组件
所以ShareThis生成了以下标记,我将其置于通过AJAX加载的EE模板中:
<span class="st_facebook_large" displayText="Facebook"></span>
<span class="st_twitter_large" displayText="Tweet"></span>
<span class="st_pinterest_large" displayText="Pinterest"></span>
<span class="st_googleplus_large" displayText="Google +"></span>
<span class="st_email_large" displayText="Email"></span>
在标题中,我按照提供的方式加载脚本:
<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "MY_PUBLISHER_ID", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>
然后在JS中,我将以下脚本绑定到加载内容的click事件:
$('#ajax-content').load('ajax/'+id, function() {
if(window.stButtons) {
stButtons.locateElements();
}
}
但是,当按钮生成正确时,它们似乎没有绑定到它们的任何事件处理程序;点击它们什么都不做。我试过没试过if(window.stButtons)
,但没有区别。
如果我使用以下代码代替stButtons.locateElements();
,则按钮甚至不显示:
$.getScript('http://w.sharethis.com/button/buttons.js', function(data, textStatus, jqxhr) {
var switchTo5x = true;
stLight.options({publisher: "MY_PUBLISHER_ID", doNotHash: false, doNotCopy: false, hashAddressBar: false});
});
任何想法出了什么问题以及我能做些什么才能让它发挥作用?
答案 0 :(得分:1)
单击“事件”仅适用于DOM加载的内容。如果在加载DOM后添加内容,则这些元素将不会包含Click事件。
要解决此问题,您需要使用jQuery Delegate Function。这也适用于&#34; Future Elements&#34;,这意味着之后使用例如Ajax加载的元素。