代码:
$('#friends_list ul li').click(function () {
var name = $(this).attr('value');
var parentlist = $('#chat_opened ul');
var overflow = parentlist.children('li').length;
var allowed = 5;
var childC = parentlist.children('li').attr('value');
if (overflow <= allowed && childC != name) {
parentlist.append('<li value="' + name + '">' + name + ' Chat</li>');
} else if (overflow > allowed) {
$('#inner_overflow ul').append('<li value="' + name + '">' + name + ' Chat</li>');
}
在我的if语句行中,我试图比较两个变量是否为真,然后执行以下操作。所以基本上如果overflow
小于或等于允许的数字,childC
不等于name
附加到父列表
在我弄清楚如何比较两个li值之后,否则将会是相同的。
EX:
<ul>
<li value="usersname">Username</li>
<ul>
<ul>
<li value="usersname">Username</li>//no more than two in this unordered list
</ul>
因此,当用户点击第一个ul li
时,它会将另一个li
附加到第二个ul
,但不会两次。截至目前,它将附加相同li
的100个,所以我需要弄清楚如何制作它,以便第二个ul不会复制具有相同值的任何相同li
。
答案 0 :(得分:1)
如果不进行您可能对代码所做的所有更改,要完成您所询问的内容,您只需检查目标列表中<li>
的数量即可具有您准备添加的值的那个:
var name = $(this).attr('value');
var parentlist = $('#chat_opened ul');
var overflow = parentlist.children('li').length;
var allowed = 5;
var duplicates = parentlist.find('li[value="' + name + '"]');
if (overflow <= allowed && duplicates.length < 1) {
. . .
这将检查是否存在任何已存在该值的<li>
。如果没有(即length < 1
),则可以安全地添加值。
答案 1 :(得分:0)
如果您使用HTML 4.01,则可以执行以下操作:
<ol>
<li value="username">User Name</li>
...
</ol>
但请注意this is deprecated。
$('#friends_list ul li').click(function () {
var name = $(this).attr('value');
var parentlist = $('#chat_opened ul');
var overflow =0;
//need to add these lines
$('#friends_list ul li').each(function(i)
{
if($(this).attr('value')==name)
overflow++;
});
var allowed = 5;
var childC = parentlist.children('li').attr('value');
if (overflow <= allowed && childC != name) {
parentlist.append('<li value="' + name + '">' + name + ' Chat</li>');
} else if (overflow > allowed) {
$('#inner_overflow ul').append('<li value="' + name + '">' + name + ' Chat</li>');
}
答案 2 :(得分:-1)
value
属性在li元素上无效,但如果您真的想在每个li上使用值,那么您可以将其与html-5 data-
属性一起使用,如:
HTML 的
<ul id='first'>
<li data-value="usersname">Username</li>
<ul>
<ul id='second'>
<li data-value="usersname">Username</li>//no more than two in this unordered list
</ul>
JS
$("#first > li").click(function(){
var self = this;
var present = false;
$.each($("#second > li"), function(i,v){
if($(v).data("value") == $(self).data("value")){
present = true;
return true;
}
});
if(!present) {
$("#second").append(self);
}
else
{
//item with same value already present in the secont ul list
}
});