addthis-button在jquery clone()之后丢失了click-event处理程序

时间:2011-11-01 12:43:18

标签: jquery clone mouseclick-event addthis

所有

我的问题如下:

我有一个包含addthis按钮的页面。通常,点击会打开一个小菜单。

在某些时候,此页面的某些部分(包括addthis按钮)会被克隆(通过jQuery)并在同一页面上重复使用。

如果我点击克隆按钮,菜单就不会打开,并且会加载一个addthis页面。

所以,显然事件处理程序会丢失,按钮(实际上是< a>)将恢复为链接并显示链接页面。

那么如何重新注册克隆按钮的事件呢?

ETA:澄清:我希望克隆addthis_button完成addthis_widget.js所做的一切。 mylittlebutton及其点击处理程序clickedhim()与问题无关,它们只会触发addthis_button的克隆。

如果有人能指出我正确的方向,我将不胜感激 此外,我有一个20行的片段,说明了这一点,如果有帮助的话。

谢谢

ETA: 代码片段:

<script src='../../js/lib/jquery-1.6.2.js' type="text/javascript"></script>

<!-- up to here, the original button is initialized -->
<a class="addthis_button addthis_button" href="http://www.addthis.com/bookmark.php?v=250">
  <img src="../../resources/img/button_share.gif" width="59" height="17" alt="Bookmark and Share" style="border:0"/>
</a>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js"></script>


<br />

<!-- button to trigger the cloning -->
<input type="button" id="mylittlebutton" onclick="clickedhim(this);" value="CLICK ME" />

<script type="text/javascript" >
function clickedhim(eventtarget) {
  var nearest_addthis = $(eventtarget).siblings("a.addthis_button");
  // clone button, and insert it after the original
  nearest_addthis.after(nearest_addthis.clone());
}
</script>

5 个答案:

答案 0 :(得分:3)

好的,我解决了。

根据Addthis Client API,任何毫无疑问的元素都可以变成addthis.button with

<script type="text/javascript">
addthis.button("#atbutton");
</script>

因此,在克隆元素后,我调用

addthis.button(".addthis_button");

一切都像魅力一样。

谢谢大家的帮助。

附录:上面的工作原理是初始化个人做所有的AddThis按钮。如果您有单独的按钮控件,如电子邮件,Facebook等...,则需要使用

addthis.toolbox('<parent element>');

初始化这些控件。

答案 1 :(得分:0)

clone documentation.clone( [withDataAndEvents] [,deepWithDataAndEvents]。因此,您可以根据需要传递2个布尔参数

所以我想在上面的例子中你想做一些像

这样的事情
var clone = $("a").clone(true);

答案 2 :(得分:0)

尝试使用委托方法:http://api.jquery.com/delegate/将事件附加到按钮。

答案 3 :(得分:0)

<input type="button" class="mylittlebutton" value="CLICK ME" />

$('.mylittlebutton').live('click', clickedhim, { eventtarget: this });

使用clone()

时,还应该添加一些关于处理按钮ID的逻辑

编辑:http://jsfiddle.net/UJ5JM/

答案 4 :(得分:0)

以下医生帮助了我。

http://support.addthis.com/customer/portal/articles/1337989-overview

我只需要添加一个类如下。

<a class="addthis_button_compact"></a>