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 ステートメントの行内で、2 つの変数が true であるかどうかを比較しようとしています。次に、次の操作を行います。したがって、基本的overflowに、許可された数以下であり、親リストへの追加とchildC等しくない場合name

2つの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>

したがって、ユーザーが最初のものをクリックすると、2 番目のものにul li別のものが追加されますが、2回ではありません。今のところ、何百もの同じものを追加するので、2 番目の ul が同じ値を持つ同じ s を複製しないようにする方法を理解する必要があります。liullili

4

3 に答える 3

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)、値を安全に追加できます。

于 2013-04-02T19:15:55.313 に答える
-1

属性は li 要素では有効ではありませんが、value実際に各 li で値を使用したい場合は、data-次のようなhtml-5 属性で使用できます。

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 に答える