2017-04-27 6 views
0

このテーブルのデータベースからPHPドラッグデータを使用してwhileループを使用してテーブルを作成しています。ダイナミックテーブル内のボタンは、一度だけJQuery関数を実行します

HTML:

<div id="divCenter" class="box"> 
    <div style="width: 166px; position: absolute; left: 642px; top: 20px; height: 44px;"> 
     <img src="../../images/logo.png" width="142" height="33"> 
    </div> 
    <div id="mainDiv"> 
     <div id="navi"></div> 
     <div id="infoi"></div> 
     <table id="hor-minimalist-b"> 
      <div id="bgDimmer"></div> 
      <div id="divContent"></div> 
      <thead> 
      <tr> 
       <th scope="col">ID</th> 
       <th scope="col">First Name</th> 
       <th scope="col">Last Name</th> 
       <th scope="col">Team</th> 
       <th scope="col">Created By</th> 
       <th scope="col">Created Date</th> 
       <th scope="col"></th> 
       <th scope="col"></th> 
      </tr> 
      </thead> 
      <tbody> 
      <?php while ($row = $getUsersQuery -> fetch(PDO::FETCH_ASSOC)) { ?> 
       <tr> 
        <td id="uId"><?php echo $row["uId"]; ?></td> 
        <td id="fName"><?php echo $row["fName"]; ?></td> 
        <td id="lName"><?php echo $row["lName"]; ?></td> 
        <td id="team"><?php echo $row["uTeam"]; ?></td> 
        <td id="cBy"><?php echo $row["createdBy"]; ?></td> 
        <td id="uCd"><?php echo $row["uCreateDate"]; ?></td> 
        <td><input type="button" name="uEdit" id="uEdit" value="Edit" /></td> 
        <td><a href="deleteUser.php?id=<?php echo $row["uId"] ?>"><input type="button" name="uDelete" id="uDelete" value="Delete" /></a></td> 
       </tr> 
      <?php } ?> 
      </tbody> 
     </table> 
    </div> 
</div> 

私の編集ボタンがポップアップをトリガーするjQueryの機能で注目されています。

はJQuery:

$(document).ready(function() { 
    $('#uEdit').click(function(){ 
     $('#bgDimmer').toggle(); 
     $('#divContent').toggle().load('editUser.php'); 
    }); 
}); 

問題は、テーブルを描画するときにのみ、最初の行の編集ボタンが機能を実行することである私は、私は本当に避けたいと、この作業を取得するためのonclickを追加する必要がありますが、必要ならば私はそうするでしょう。

私の質問には、私の質問が明確になっていることがあります。

答えて

1

idの値は一意であり、繰り返されないので、ボタンのクラスを使用することをお勧めします。

<td><input type="button" class="buttonClassName" name="uEdit" id="uEdit" value="Edit" /></td> 

とjQuery:ボタンで代わりにIDの

$(document).ready(function() { 
    $('.buttonClassName').click(function(){ 
    $('#bgDimmer').toggle(); 
    $('#divContent').toggle().load('editUser.php'); 
    }); 
}); 
+0

私が間違っていたことを私に見せていただきありがとうございます。しかし、なぜ@BhupeshコードはHTMLを編集することなく機能しましたか? – Sand

+1

あなたの歓迎! (function(){}); 'これは、セレクタと一致するすべての要素に対して別々のハンドラを作成します。この場合、idが "uEdit"の最初の要素で停止します(ハンドラはidが "uEdit"の最初の要素に対してのみ作成され、残りは無視されます)。 '$(document).on( 'click'、 '#uEdit'、function(){});これはセレクタに一致するすべての要素に対して単一のハンドラを作成します。したがって、id = "uEdit"の要素がクリックされると、いつでもその関数が呼び出されます。 –

+0

私が知らなかったことを学んだことをありがとう。 – Sand

1

は、このコード

$(document).ready(function() { 
    $(document).on('click','#uEdit',function(){ 
     $('#bgDimmer').toggle(); 
     $('#divContent').toggle().load('editUser.php'); 
    }); 
}); 
+0

それは私が間違っていたことを教えてくれますか? – Sand

0

を試してみてください私はあなたの問題は、あなたが自分のIDとしてuEditで複数の要素を生成しているという事実にあると思います。あなたは特定のIDのためにあなたのページに1つの要素しか持たないようにしてください。 idsの代わりにクラスを使用して同じことを試してください

0

id = "uEdit"をclass = "uEdit"に変更して、コードを$( '。uEdit')に変更してみてください。/code})。 Idはページ上のユニークな要素を意味します

0

使用クラス

HTML

<input type="button" name="uEdit" class="uEdit" value="Edit" /> 

のjQuery

$(document).ready(function() { 
    $('.uEdit').click(function(){ 
     $('#bgDimmer').toggle(); 
     $('#divContent').toggle().load('editUser.php'); 
    }); 
}); 
関連する問題