кнопка addthis теряет обработчик события click после jquery clone () - PullRequest
2 голосов
/ 01 ноября 2011

все

моя проблема заключается в следующем:

У меня есть страница, содержащая кнопку добавления.Обычно щелчок открывает небольшое меню.

В какой-то момент части этой страницы, включая кнопку добавления, клонируются (через jQuery) и повторно используются на той же странице.

ЕслиЯ нажимаю на клонированную кнопку, меню не открывается, и загружается дополнительная страница.

Таким образом, очевидно, что обработчик событий теряется, и кнопка (которая на самом деле ) возвращается кссылка и отображает связанную страницу.

Так как я могу заново зарегистрировать события клонированной кнопки?

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 ]

3 голосов
/ 04 ноября 2011

Хорошо, я решил это.

В соответствии с API клиента Addthis , любой ничего не подозревающий элемент можно превратить в кнопку addthis.but с помощью

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

.После того, как я клонирую свои элементы, я звоню

addthis.button(".addthis_button");

и все работает как чудо.

Спасибо всем за помощь.

Приложение: Вышеприведенное работает для инициализации отдельной кнопки AddThis.Если у вас есть отдельные элементы управления кнопками, такие как электронная почта, Facebook и т. Д., Вам нужно будет использовать

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

для инициализации этих элементов управления.

0 голосов
/ 08 апреля 2015

Мне помог следующий документ.

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

Мне просто нужно добавить класс, подобный следующему.

<a class="addthis_button_compact"></a>
0 голосов
/ 01 ноября 2011

Попробуйте использовать метод делегата: http://api.jquery.com/delegate/, чтобы прикрепить событие к кнопке (кнопкам).

0 голосов
/ 01 ноября 2011
<input type="button" class="mylittlebutton" value="CLICK ME" />

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

Вы также должны добавить логику обработки идентификатора кнопки при использовании clone ()

редактировать: http://jsfiddle.net/UJ5JM/

0 голосов
/ 01 ноября 2011

документация клон говорит .clone( [withDataAndEvents] [,deepWithDataAndEvents].Таким образом, вы можете передать 2 логических параметра в зависимости от ваших потребностей

, поэтому я думаю, что в приведенном выше примере вы хотите сделать что-то вроде

var clone = $("a").clone(true);
...