簡體   English   中英

在while循環中處理div

[英]deal with a div within a while loop

我有一個while循環,它顯示數據庫中的數據項,我想分開處理,但我得到的只是第一個div,對於每次迭代,我想獲取當前迭代的“ id”並進行處理,在Facebook上看起來像“贊”,當我單擊第一個“ $.post(..) ”時,jQuery運行$.post(..)函數,一切正常:使用此ID完成處理,但是當我單擊其他下一個“贊”時post methode仍然發送第一個id(由firebug檢出),代碼:

<script type='text/javascript>
  $("#like").click(function(){
    $.post("done.php",
      {id:$("#id").val()},
      function(data){
        ...
      });
   });
</script>

<body>
$result = myqsl_query("select * from ...");
while($fetch = mysql_fetch_array($result){
..
echo "<input id='id' value='$fetch[0]'>
<a href='...' id='like'>like</a>";
..
</body>

希望我能成功地描述問題! 任何語言的解決方案將不勝感激! 問候。

如果您的最終輸出看起來像這樣:

<input id='id' value='someValue'>
<a href='someLink' id='like'>like</a>
...
<input id='id' value='someValue'>
<a href='someLink' id='like'>like</a>

會給您帶來麻煩,因為ID必須在每個域中唯一。

您可以對其進行改寫以使用類:

<input class="likeId" value='someValue'>
<a href='someLink' class='like'>like</a>
...
<input class="likeId" value='someValue'>
<a href='someLink' class='like'>like</a>

而不是在點擊處理程序中。

$(".like").click(function(){
    $.post("done.php",
      {id:$(this).prev('.likeId').val()},
      function(data){
        ...
    });
});

根據輸入值是否被隱藏,您可以將其完全刪除,並使用html data-*屬性和.data()假設您可以使用大於1.4.3的jQuery。

<a href='someLink' class='like' data-likeId='someValue'>like</a>
<a href='someLink' class='like' data-likeId='someValue'>like</a>

$(".like").click(function(){
    $.post("done.php",
      {id:$(this).data('likeId')},
      function(data){
        ...
    });
});

ID在HTML文件中必須唯一。 如果您有多個具有相同ID的元素,則瀏覽器僅返回第一個元素。 因此, $('#like').click()僅將click事件處理程序附加到具有此ID的第一個元素上。

您必須改為使用類:

<script type='text/javascript>
  $(".like").click(function(){
    $.post("done.php",
      {id:$(this).prev().val()},
      function(data){
        ...
      });
   });
</script>

<body>
<?php
    $result = myqsl_query("select * from ...");
?>
<?php while(($fetch = mysql_fetch_array($result))): ?>
    <input class="something" value="<?php echo $fetch[0]; ?>" />
    <a href="..." class="like">like</a>
<?php endwhile; ?>
</body>

進一步說明:

  • 您不應該echo HTML,它會使維護變得困難。 而是將PHP嵌入HTML中,如我上面所示。
  • 我還將控件結構使用替代語法,如果將HTML和PHP混合使用,則更易於閱讀。

也許您可以執行以下操作:

<script type='text/javascript>
   $(".like").click(function(){
      $.post("done.php",
         {id:$("#id").prev("input").val())},
         function(data){
         ...
      });
   });
</script>

<body>
    $result = myqsl_query("select * from ...");
    while($fetch = mysql_fetch_array($result){
    ..
    echo "<input name='id' value='$fetch[0]'>
    <a href='...' class='like'>like</a>";
    ..
</body>

您說“第一次喜歡”,所以我假設您在頁面中有很多“喜歡”按鈕。

$("#like").click(function(){

但是標准會告訴您ID是唯一的。 也許是一個全局變量,它將迭代'#like1', '#like2' ID后面,例如'#like1', '#like2'等。

不知道這是否會導致您找到答案,但這是需要考慮的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM