0

代码:

$('#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 值之后, else if 将是相同的。

前任:

<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而不是两次。到目前为止,它将附加 100 个相同的值li,所以我需要弄清楚如何制作它,这样第二个 ul 就不会复制任何li具有相同值的相同 s。

4

3 回答 3

1

无需深入了解您可以对代码进行的所有更改,以完成您所拥有的内容,您可以简单地检查<li>目标列表中具有您准备好的值的 's的数量加上:

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),那么您可以安全地添加该值。

于 2013-04-02T19:15:55.313 回答
0

如果您使用 HTML 4.01,您可以这样做:

<ol>
  <li value="username">User Name</li>
  ...
</ol>

但请注意,这已被弃用

$('#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>');
 }
于 2013-04-02T19:19:32.997 回答
-1

属性在valueli 元素上无效,但如果您真的想在每个 li 上使用值,则可以将其与 html-5data-属性一起使用,例如:

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
    }
  });
于 2013-04-02T19:08:58.357 回答