2012-03-04 9 views
0

私は、特定の「不在者」とそのIDを隠しフォームで追加することができるコードを、クリックすると不在者リストに追加します。もう一度クリックすると、不在者リストから「不在者」が削除されます。しかし、もう一度クリックすると、リストの中にはさらに のコードと隠しフォームの値が削除されていないように見えます。削除された不在者がデータベースに記録されないように、隠し値を削除する必要があります。不在者リストが表示されるように、私はbr が必要です。.htmlで置換するときは、隠し値を削除して<br>を置き換えます。

は、ここに私のコードです:http://jsfiddle.net/gk5pV/8/

答えて

1

私は全面的に@charlietflに同意します。ブロックレベルの要素を使用してください。また、あなたの不在者を追跡するために単一の隠れた入力を使用してください。​​3210、コード:

$(function() { 
    $("td").click(function() { 
     var $this = $(this); 
     var user = $this.attr('id'); 
     var p = $('<p />').attr('user', user).text($this.text()); 
     var absentees = []; 
     if ($('#absentees').val().length > 0) { 
      absentees = $('#absentees').val().split(',') 
     } 
     if ($(this).hasClass('on')) { 
      //console.log("Already marked absent"); 
      //remove from collection 
      $("#collect").children('p[user="' + user + '"]').remove(); 
      absentees.splice(absentees.indexOf(user), 1); 
     } 
     else { 
      //console.log(user); 
      //add to collection 
      $("#collect").append(p); 
      absentees.push(user); 
     } 
     $this.toggleClass('on'); 
     $('#absentees').val(absentees.join(',')); 
    }); 

    $("#clicky").click(function() { 
     $('td').removeClass('on'); 
     $("#collect").empty(); 
     $('#absentees').val(''); 
    }); 
});​ 
+0

を固定していません。コードを使用する前にまずそのコードを理解しようとします。初心者のjqueryユーザー:D。ありがとう! – user1056998

+0

ところで、私は欠席を爆発しようとしているが、それは常に「アレイ」が表示されます。何か案が? – user1056998

+0

不在者を「爆破する」とはどういう意味ですか? – pete

0

ソリューションは非常に簡単です。ブロックレベルの要素(div、p、liなど)に、追加するテキストと非表示の入力を囲みます。<brタグは不要です。不在者をリストから削除するとブロック要素が削除され、入力はその要素の一部になりますので、存在しなくなります。新しいブロックレベルの要素にクラス名を指定すると、イベントハンドラをクラスにアタッチすることができます

+0

ただし、リストの削除は機能しますが、隠しフォームによる隠しIDはまだ次のページに投稿されています。順不同リストhttp://jsfiddle.net/mK8Dr/ – user1056998

+0

の例では、すでに何
PAこの1作品 – charlietfl

+0

を使用していない ''
と – user1056998

関連する問題