错误是生成偶数功能已定义

时间:2014-05-30 23:59:14

标签: javascript jquery

单击操作会在定义功能时生成此错误消息 未捕获的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>

3 个答案:

答案 0 :(得分:1)

jQuery中没有名为.previous()的方法

应该是.prev()

另外,为什么要覆盖class属性。

您可以使用addClassremoveClass方法

答案 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);
});

http://jsfiddle.net/Ze4z6/2/

我不知道你的actLsn的变量在哪里......你的意思是$(这)就像我在第2行那样吗?

答案 2 :(得分:0)

使用prev()代替previous():)