单击操作会在定义功能时生成此错误消息 未捕获的typeError:undefined不是函数
单击向左箭头使所有html不可见,而代码未被jquery删除。 的 jsFiddle here
var left='.lessonNavigation li.expanded.left'
var actLsn='.lessonNavigation li.activeLesson'
var right='.lessonNavigation li.expanded.right'
var leftArrowHTML='<li class="left arrow"><i class="icon icon-arrow-left"></i></li>'
var rightArrowHTML='<li class="right arrow"><i class="icon icon-arrow-right"></i></li>'
$('.lessonNavigation').on('click', '.left.arrow', function () {
$(right).attr('class','dn');
$('.arrow').remove();
$(actLsn).attr('class','expanded right');
$(left).attr('class','activeLesson');
$(actLsn).previous().attr('class','expanded left');
$(actLsn).after(rightArrowHTML);
$(actLsn).before(leftArrowHTML);
});
HTML代码
<div class="lessonNavigation lesson">
<ul class="expandable">
<li class=""><b>L1</b><span>Recognize a digit represents 10 times the value</span></li>
<li class="expanded left"> <b>L2</b><span>Recognize a digit represents 10 times the value</span></li>
<li class="left arrow"><i class="icon icon-arrow-left"></i></li>
<li class="activeLesson"><b>L3</b><span>Recognize a digit represents 10 times the value</span></li>
<li class="right arrow"><i class="icon icon-arrow-right"></i></li>
<li class="expanded right"><b>L4</b><span>Recognize a digit represents 10 times the value</span></li>
<li class=""><b>L5</b><span>Recognize a digit represents 10 times the value</span></li>
<li class=""><b>L6</b><span>Recognize a digit represents 10 times the value</span></li>
</ul>
</div>
答案 0 :(得分:1)
jQuery中没有名为.previous()
的方法
应该是.prev()
另外,为什么要覆盖class属性。
您可以使用addClass
和removeClass
方法
答案 1 :(得分:0)
您有许多未定义的变量,但对于初学者,您无法将更多选择器传递给您的点击处理程序。尝试这样的事情。
$('.lessonNavigation li.left.arrow').on('click', function () {
$(this).attr('class','dn');
$('.arrow').remove();
$(actLsn).attr('class','expanded right');
$('.lessonNavigation li.expanded.left').addClass('activeLesson');
$('.lessonNavigation li.expanded.left').attr('class','activeLesson');
$(actLsn).previous().attr('class','expanded left');
$(actLsn).after(rightArrowHTML);
$(actLsn).before(leftArrowHTML);
});
我不知道你的actLsn的变量在哪里......你的意思是$(这)就像我在第2行那样吗?
答案 2 :(得分:0)
使用prev()
代替previous()
:)