2013-02-11 2 views
0

좋아요. 개인 메시지 시스템을 만들고 동일한 클래스로 div를 에코하도록 설정했지만 ID를 행 ID로 설정하려면 코드를 검사하십시오. 이하.동일한 클래스를 가진 두 개의 다른 div의 id 값 얻기

function Load() 
{ 

$Connect = new mysqli("localhost", "root", "", "Data"); 
session_start(); 
$User = $_SESSION['Username']; 
$Stats = 'SELECT * FROM Messages WHERE User="'.$User.'"'; 

if($Result = $Connect->query($Stats)) 
{ 
    while($Row = $Result->fetch_assoc()) 
    { 
     $From = $Row['FUser']; 
     $Date = $Row['Date']; 
     $Title = $Row['Title']; 
     $ID = $Row['ID']; 

     echo '<div id="'.$ID.'" class="String"><label class="TText" style="cursor:pointer;">From: ' . $From . ' - ' . $Date . ' - ' . $Title .'</label></div>'; 
    } 
} 

}

내 JQuery와 :

$('.String').click(function() 
{ 
    var Msg = $('#MMsg'); 
    var Back = $('#Back'); 
    var Str = $('.String'); 
    Str.fadeOut('fast', function() 
    { 
     Msg.fadeIn('fast'); 
     Back.fadeIn('fast'); 
     var ID = $('.String').attr('id'); 

     $.ajax 
     ({ 
      url:'MLoad.php', 
      type:'POST', 
      data:{ID:ID}, 
      dataType:'json', 
      success:function(MText) 
      { 
       $('#MMBox').html(MText.T); 
      } 
     }); 
    }); 
}); 

내가 모두 div에 대해 동일한 결과를 얻을 수 있지만, HTML에서 ID가 각각 다른 var에 ID를 경고 할 때. 즉 알림 상자는 매번 첫 번째 ID를 알려줍니다.

답변

2

$ (this)를 사용하여 fadeOut이 적용되는 요소의 ID를 가져옵니다. 그렇지 않으면 첫 번째로 일치하는 div의 ID 만 가져옵니다.

var ID = $ (this) .attr ('id');

+0

! 감사. –

+0

내가 7 분 안에 즉시 받아 들일 수 없게됩니다. –

0

클릭 기능을 사용 중일 때 this은 클릭 한 항목을 나타냅니다. 따라서 $(this).attr('id')을 사용하여 클릭 한 .String의 ID를 검색 할 수 있습니다.

$('.String').click(function() 
{ 
    var id = $(this).attr('id'); 
    var Msg = $('#MMsg'); 
    var Back = $('#Back'); 
    var Str = $('.String'); 
    Str.fadeOut('fast', function() 
    { 
     Msg.fadeIn('fast'); 
     Back.fadeIn('fast'); 

     $.ajax 
     ({ 
      url:'MLoad.php', 
      type:'POST', 
      data:{ID:id}, 
      dataType:'json', 
      success:function(MText) 
      { 
       $('#MMBox').html(MText.T); 
      } 
     }); 
    }); 
}); 
관련 문제