jQuery tablo satırının numarasını alma ile Yardım

2 Cevap php

Ben jQuery ve PHP ne yapıyorum bir dizi döngü ve bir tablo üreten bir AJAX isteği yapıyorum, her döngü bir yeni oluşturulan ve onlar beni ajax bağlantı okumak ve biraz daha tıkladığınızda bir kimliği, kendisine verilen içerik daha ben masadan kaldırılması için ilgili tablo satırı bu mümkün istiyorum okumak tık üzerine, döndürülür, şimdiye kadar aşağıda benim girişimi görebilirsiniz.

<div id="new" class="tabdiv">
    <table>
    <?php
        $colours = array("#f9f9f9", "#f3f3f3"); $count = 0;
        if(isset($newSuggestions)) {
            foreach($newSuggestions as $row) {
                if($row['commentRead'] == 0) {
    ?>
                    <tr id="<?=$row['thoughtId'];?>" bgcolor="<?php echo $colours[$count++ % count($colours)];?>">
    <?php
                        echo "<td>".substr($row['thought'], 0,50)."...</td>";
                        echo "<td class='read'><a href='".base_url()."thought/readSuggestion/".$row['thoughtId']."' class='readMore'>Read More</a>";
                    echo "</tr>";
                }
            }
        } else {
            echo "You have no new suggestions";
            }
    ?>
    </table>

$('a.readMore').click(function(){
            $('#readMore').fadeIn(500);
            var url = $('a.readMore').attr('href');
            $.ajax({
                url : url,
                type : "POST",
                success : function(html) {
                    $('#readMore').html(html)
                },
                complete : function() {
                    $('tr').remove()
                } 
            });
            return false;
        });

2 Cevap

Böyle satırın id alabilirsiniz:

$(this).parent().parent().attr("id")

$(this) ilk ebeveyn td ve sonraki tr alır, bir elemanı sarar. Tıklama geri arama içinde bu diyoruz. Id bir harfle başlar emin olun; Bir dizi başlatmak için izin verilmez. Bunu silmek için, bir değişken tanımlayın:

var row = $(this).parent().parent();

Daha sonra geri çağrıları da silebilirsiniz:

row.delete();

As kgiannakakis points out you'll need a reference to the element that was clicked. To find out what went wrong, consider the following lines of your code:

$('a.readMore').click(function(){
  var url = $('a.readMore').attr('href');
  ...
  return  false;
});

What you do here is add an event handler to all a elements with a readMore class. When the link is clicked you again select all a elements with a readMore class and retreive the href attribute from the first matched element. What you want to do is get the attribute from the element that was clicked.

$('a.readMore').click(function(){
  var url = $(this).attr('href');
  ...
  return  false;
});

Aynı sorun ajax isteği başarı ve tam işleyicileri oluşur, bir var bunu saklamak gerekir böylece muhtemelen ajax çağırmadan önce başka bir nesneye işaret olacaktır çünkü başarı / tam işleyicileri bu kullanamazsınız unutmayın fonksiyonu.