我有一个 slider ,我已将它组织成一个 <ul>
与 <li>
s 作为要循环的单个元素。只有第二个<li>
是可见的,如果向左滚动,它会占用最后一个 <li>
并将其删除,将其放在前面,如果向右滚动则反之亦然。
这是密码笔:http://codepen.io/anon/pen/kGBcr
slider 位于右侧“更多影响者”下方。问题是当我点击“关注”链接时,它会像我想要的那样更改 CSS 和文本,直到它到达 <li>
。已被移除并放置在另一端。它不会阻止默认链接,只是重新加载页面。
感谢您的帮助!
旋转 slider 的函数在第 120 和 135 行。更改文本和 CSS 背景颜色的函数在第 78 行。
最佳答案
每当您使用 remove()
删除一个元素时,它就会失去其绑定(bind),您需要重新绑定(bind)事件监听器。
但是,如果您使用 appendTo()
来移动它,事件监听器将保留下来。
另一种方法是使用 detach()
函数:
var objectWithEvents = $('#old').detach();
$('#new').append(objectWithEvents);
你的情况比仅仅删除更糟糕,因为你正在使用:
html = $('element').html();
newHtml = someEl.append('<li>'+html+'</li>');
在第 127 行附近。这使情况变得更糟,因为您不仅要删除该元素,而且要获取其 html 内容,这使得保持事件监听器与其关联变得更加困难。
关于javascript - preventDefault 无法循环通过已移动的 <li>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214226/