2012-02-15 4 views
0

私はこのjQueryの使用しています:のjQueryが動作しない(たぶん、AJAXのリロード - または多分ちょうど悪い構文?)

$('#resultstable').on('click', 'tbody tr', function() { 
alert("helloworld") 
$('#resultstable tr.Selected').removeClass('Selected'); 
$(this).addClass('Selected'); 
}); 

それがクリックされたとき、TRに選択されたクラスを追加する必要があります。また、選択したクラスの他のインスタンスも削除する必要があります。 (つだけTRを一度に選択することができます)

それは、このテーブルに取り組んでいる:私もテーブルが動的であることを言及する必要があり

 <table id="resultstable"> 

      <tr id="resultsheading"> 
       <th OnClick="OrderBy(0)">Module<br /> Code</th> 
       <th OnClick="OrderBy(1)">RoomID</th> 
       <th OnClick="OrderBy(2)">Students</th> 

       <th OnClick="OrderBy(3)">Priority</th> 
       <th OnClick="OrderBy(4)">Weeks</th> 
       <th OnClick="OrderBy(5)">Day</th> 
       <th>Start Time</th> 
       <th>Length</th> 
       <th>End Time</th> 

       <th OnClick="OrderBy(6)">Date Added</th> 
      </tr> 
<tbody> 
    <tr id= "192" > 
     <td>11COA121</td> 
     <td>CC012</td> 
     <td>340</td> 
     <td>Yes</td> 

     <td>All</td> 
     <td>0</td> 
     <td>1</td> 
     <td>1</td> 
     <td>2</td> 
     <td>0000-00-00 00:00:00</td> 

    </tr>  
</tbody> 
</table> 

と、ユーザは、このような編集や削除などのボタンをクリックしたときそれはその行を削除してから、これを使用してテーブルをリロードします(たとえば、行を削除する):現時点で

function DeleteRequest(ReqID) 
    { 
     //Ajax call for deleterequest 
     $.post("a/outputresults2.php", {DelRequest: ReqID} , function(data) 
{ 
      $('#resultstable').html(data); 
      }); 

    } 

を、それは何もしていないとさえして、実行されていない、それが警告されていません。どうした?

JSコンソールにはエラーが表示されません。

ありがとうございました!

+0

それは私のために実行されます:http://jsfiddle.net/T9gdA/1/ – bfavaretto

+0

それは私のためにもIEとクロームで動作します。 – CompanyDroneFromSector7G

+0

あなたのAJAX呼び出しによって返されたHTMLを見て、問題がそこにあるかもしれません。 –

答えて

1

私は問題は、私はこれを正しく理解していれば、あなたは入れセレクタは、現在のテーブルの内側のtbodyとTR要素にイベントハンドラを添付しますので、あなたは新しいTR要素を追加するときに、このライン

$('#resultstable').on('click', 'tbody tr', function() { 

だと思いますイベントハンドラは新しい行に対してトリガされません。

あなたは基本的にはTRにターゲットをフィルタリングしたりevent.targetプロパティに基づいて自分自身をTBODY

$('#resultstable').on('click', function(event) { 
    if ($(event.target).is('tr') || $(event.target).is('tbody')) { 
     // ... do logic in here 
    } 
}); 

ような何かを試みることができます。

+0

解決策のアイデア...:( – user1096685

+0

追加コードをご覧ください –

0

私はあなたが変更する必要があるかもしれません疑う:

$('#resultstable').on('click', 'tbody tr', function() { 

へ:

$('#resultstable').live('click', 'tbody tr', function() { 

ので、動的にロードされたデータで作業を続けています。

+1

'on'と' live' =同じこと.... jQuery 1.7以降、 '.live()'メソッドは非推奨です。 '.on()'を使ってイベントハンドラをアタッチしてください。古いバージョンのjQueryのユーザは、.live()よりも '.delegate()'を使うべきです。 – ManseUK

+1

ライブは使用しないでください。廃止予定です。 http://api.jquery.com/live/ – CompanyDroneFromSector7G

+0

Cool。ヘッドアップをありがとう。 – Donnie

関連する問題