2

私のjQueryでは、オートコンプリートで選択したアイテムから、次のような学生の詳細を取得しています。

var data = "<div class='close'><table><tr><td rowspan='4' width='50px;'>
     <img src='" + studentItem.Photo + "' Width='48' Height='48'  /></td><td>" + 
     studentItem.Name + " ( <span class='stuId'>" + studentItem.StudentId + 
     "</span> )</td><td align='right' ><div class='close16'/></td></tr><tr><td>
     <table cellpadding='0' cellspacing='0'><tr><td>" + studentItem.Email +
     "</td><td>&nbsp;|&nbsp;</td><td>" + studentItem.Mobile + "</td></tr></table>
     </td></tr></table></td></tr></table></div>";

dataこれを次のようなdivタグにバインドしています

$("#students").append(data);

ここでの問題は、同じ学生を何度も取得でき、同じデータをこのdivタグに何度もバインドできることです。

それで、これを制限するために、私は前に条件を設定しようとしましたdata

if (!$('.stuId').is(studentItem.StudentId)) {
   var data=..........
}
else{
  alert('Duplicate data');
}

しかし、studentIdがすでにdivにある場合でも、ブロックに入ります。どうすればこれを修正できますか、誰かがここで私を助けてくれますか

4

1 に答える 1

3

あなたがどんな種類を持っているかわからないのでStudentId、私たちは使うことができますfilter(しかし、場合によって:containsは十分かもしれません):

var len = $('.stuId').filter(function() {
    return this.innerHTML == studentItem.StudentId;
}).length;

if (len == 0) {
    var data = ..........
} else {
    alert('Duplicate data');
}​

すべての.stuId要素を選択し、重複をフィルタリングします。

于 2012-05-26T08:51:04.917 に答える