preventDefault无法通过已经移动的<li>循环</li>

时间:2014-08-09 00:58:45

标签: javascript jquery html css

我有一个滑块,我已将其组织到一个<ul>中,<li>作为要循环的单个项目。只有第二个<li>可见,如果向左滚动,则需要使用最后一个<li>并将其删除,将其放在前面,反之亦然,如果向右滚动。

以下是代码笔:http://codepen.io/anon/pen/kGBcr

滑块位于&#34;更多影响者的右侧。&#34;问题是当我点击“关注”后面。链接,它改变了我想要的CSS和文本,直到它到达已被移除并放置在另一端的<li>。它不会阻止默认链接,只是重新加载页面。

感谢您的帮助!

旋转滑块的功能位于第120行和第135行。更改文本和CSS背景颜色的功能位于第78行。

1 个答案:

答案 0 :(得分:2)

每当使用remove()删除元素时,它都会丢失其绑定,您需要重新绑定事件侦听器。

但是,如果您使用appendTo()来移动它,那么事件监听器将会存在。

另一种选择是使用detach()函数:

var objectWithEvents = $('#old').detach();
$('#new').append(objectWithEvents);

您的情况甚至比仅仅删除更糟糕,因为您正在使用:

html = $('element').html();
newHtml = someEl.append('<li>'+html+'</li>');

第127行。这使得它更糟糕,因为不仅你要删除该元素,而且使用其html内容使得保持与之相关的事件监听器变得更加困难。