我创建了一个动态列表,用户可以在其中添加和删除内容,对此列表有一个限制,即用户不能输入超过5的限制。每次用户在输入字段中单击“ Enter”时,检查列表大小是否达到最大值,因为我不希望收到警报,因此更改文本和字体颜色是最大的。另一方面,如果列表达到了极限,并且用户决定删除一些项目,那么这里的问题是我如何不断监视列表的大小以提供更好的反馈。有没有一种方法可以将eventListener放在(ul)上以检查其中有多少(li)?我正在使用JQuery来管理所有内容,我不介意其他语言的解决方案。
<input type="text" placeholder="Type here">
<ul class="sortable" id="inputList">
<?php
for($i=0; $i<sizeof($serverItems); $i++)
echo "<li>".$serverItems[$i]."<a class='close remove'>×</a></li>";
?>
</ul>
<span id="listLimit">(Max: 5)</span>
我的JQuery看起来像这样:
$('#input').keydown(function(e) {
if(e.keyCode == 13 && $(this).val()!="") {
if($('#inputList li').size()<5){
var item = $(this).val();
$('#inputList').append('<li>' + item + '<a class="close remove">×</a></li>');
} else $('#listLimit').text('Maximum Limit Reached!').css('color','red');
$(this).val('');
}
});
这就是我如何删除点击项:
$(document).on('click', '.remove', function() {
$(this).parent().remove();
});
请注意,“ close”类仅适用于CSS,“ remove”类是JQuery中用于删除该项的东西。
尝试使用以下选项
$("li").on('click', '.remove', function() {
$(this).parent().remove();
});
在您的keydown函数中,通过$(“ li”).length检查li个项目的数量。li个项目的总数警报(“ Size:” + $(“ li”).length); 注意:从jQuery 1.8开始不推荐使用.size()方法,最好使用.length()代替size()
我观察到的其他语法错误是#input是ID为-input的输入字段,但是在您的示例中没有输入ID,因此应如下所示
$('input')。keydown(function(e)
Codepen- http: //codepen.io/nagasai/pen/XKKoYx
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句