你真的应该使用 mouseenter,mouseleave 事件,基于:http: //jquery.com/upgrade-guide/1.9/#hover-pseudo-event并且在你的小提琴中,你有一部分在点击时设置父元素的数据可能更简单:
$('li.list-item').on('mouseenter', '>a:not(.active)', function () {
$(this).clearQueue().stop().animate({
marginLeft: 40
}, 250);
});
$('li.list-item').on('mouseleave', '>a:not(.active)', function () {
$(this).clearQueue().stop().animate({
marginLeft: 0
}, 250);
});
$('.list-item[data-toggle="collapse"] ').on('click', '>a', function () {
$(this).parent().data('attr', !$(this).parent().data('attr'));
});
EDIT1:旁注,您还可以在元素上捕获第二个事件,而不是在保存.parent()
遍历的链接上,如下所示:
$('.list-item[data-toggle="collapse"] ').click( function () {
$(this).data('attr', !$(this).data('attr'));
});
如果您正在动态创建附加到 ul 的 li 元素:
$('ul').on('click', '.list-item[data-toggle="collapse"] ', function () {
alert($(this).data('attr'));
$(this).data('attr', !$(this).data('attr'));
});