2

全て

私の問題は次のとおりです。

addthis-button を含むページがあります。通常、クリックすると小さなメニューが開きます。

ある時点で、このページの一部 (addthis-button を含む) が (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>
4

5 に答える 5

3

わかりました、解決しました。

Addthis Client APIによると、無防備な要素を addthis.button に変えることができます。

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

したがって、要素を複製した後、呼び出します

addthis.button(".addthis_button");

すべてが魔法のように機能します。

ご協力ありがとうございました。

補遺:上記は、個々の do-everything AddThis ボタンを初期化するために機能します。電子メール、Facebook などの個別のボタン コントロールがある場合は、使用する必要があります。

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

これらのコントロールを初期化します。

于 2011-11-04T12:53:58.437 に答える
0

クローンのドキュメントには.clone( [withDataAndEvents] [,deepWithDataAndEvents]. したがって、必要に応じて2つのブール値パラメーターを渡すことができます

上記の例では、次のようなことをしたいと思います

var clone = $("a").clone(true);
于 2011-11-01T12:45:00.143 に答える
0

デリゲート メソッド ( http://api.jquery.com/delegate/ ) を使用して、イベントをボタンにアタッチしてみてください。

于 2011-11-01T13:07:10.920 に答える
0

次のドキュメントは私を助けました。

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

次のようなクラスを追加するだけです。

<a class="addthis_button_compact"></a>
于 2015-04-08T08:28:28.733 に答える
0
<input type="button" class="mylittlebutton" value="CLICK ME" />

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

clone() を使用するときにボタン ID を処理するためのロジックも追加する必要があります。

編集: http://jsfiddle.net/UJ5JM/

于 2011-11-01T13:50:14.753 に答える