javascript - 删除一个 li 元素不起作用

标签 javascript jquery html css

我需要在单击 li 元素时删除它。起初代码工作正常,然后当我放入我的元素时,删除功能不起作用。我把我的代码放在 fiddle 上,没有任何工作了。我搜索了所有网络并尝试修复但没有任何效果,请向我解释,因为我对 jquery 和 java 脚本还是陌生的。

这是我的 fiddle 代码:http://jsfiddle.net/cyrzbvwe/

我的 HTML 需要:

<ul class="listcheckbox">
<li class="clearfix">
    <input type="checkbox" id="chk1" name="timetable" />
    <label for="chk1">9-10g <span class="pull-right"></span>

    </label>
</li>
<li class="clearfix">
    <input type="checkbox" id="chk2" name="timetable" />
    <label for="chk2">10-11g <span class="pull-right"></span>

    </label>
</li>
<li class="clearfix">
    <input type="checkbox" id="chk3" name="timetable" />
    <label for="chk3">11-12g <span class="pull-right"></span>

    </label>
</li>
<li class="clearfix">
    <input type="checkbox" id="chk4" name="timetable" />
    <label for="chk4">12-13g <span class="pull-right"></span>

    </label>
</li>
<li class="clearfix">
    <input type="checkbox" id="chk5" name="timetable" />
    <label for="chk5">13-14g <span class="pull-right"></span>

    </label>
</li>
<li class="clearfix">
    <input type="checkbox" id="chk6" name="timetable" />
    <label for="chk6" class="item">14-15g <span class="pull-right"></span>

    </label>
</li>

这里是脚本

$(document).ready(function () {
$('input[name="timetable"]').change(function () {
    if ($(this).is(':checked')) {
        $('#timeselect').append($('<li class="clearfix delete">' + $('label[for="' + this.id + '"]').text() + '<img src="delete.png" class="pull-right" /></a></li>'));
        $(this).attr('disabled', true);
    }
});

$('#timeselect').on('click', 'li.delete', function () {
    var time = $(this).text().trim();
    var idTime = '#' + $('label').filter(function () {
        return this.firstChild.nodeValue.trim() === time;
    }).attr('for');

    $(idTime).prop('checked', false);
    $(idTime).attr('disabled', false);

    $(this).remove();
});
});

最佳答案

点赞@JoakimM 和@PpringLearner 的评论。原来我忘了在 jsFiddle 中包含 jquery

但我遇到的问题是,当我添加更多带标签的复选框时,删除功能不再起作用。这里的代码:http://jsfiddle.net/ptrpzvLv/

我像@JoakimM 说的那样调试,结果发现一些标签元素不包含任何值,所以 trim() 函数出错并停在那里......

我所做的是在 var idTime = '#' + $('label').filtervar idTime = '#' + $ 这行让它更清晰('ul.listcheckbox 标签').filter

p/s:非常感谢您的帮助。

关于javascript - 删除一个 li 元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758806/

相关文章:

javascript - 如何根据与变量匹配的数据属性选择div?

javascript - 仅当从 Node 运行时,Rsync 才会失败,退出代码为 23

javascript - 从 parent 到 child 应用相同的填充值?

jquery - 在 jQuery 中循环遍历数组

php - 录音php和jQuery

javascript - express.js 中间件中的空参数对象

javascript - 文本视差效果

html - 完美的液体布局

html - SVG <g> 和 <text> 元素的默认宽度/边距/填充是多少?

javascript - 如何从 dropbox 文件夹应用 CSS 和 JavaScript(用于在博客中使用)