PHP生成的表按钮onclick仅适用于第一个

时间:2017-03-12 11:46:34

标签: javascript php jquery html mysql

我有一个从PHP生成的HTML表(来自SQL查询的结果):

echo "<table border=\"5\"><tr><th>Codice</th><th>Titolo</th><th>Anno Creazione</th><th>Materiale</th><th>Altezza</th><th>Peso</th><th>Museo</th></tr>";
while($row = mysqli_fetch_assoc($results)) {
        echo "<tr><td>".$row["Codice"]."</td><td>".$row["Titolo"]."</td><td>".$row["Anno_creazione"]."</td><td>".$row["Materiale"]."</td><td>".$row["Altezza"]."</td><td>".$row["Peso"]."</td><td>".$row["Museo"]."</td><td><button id=\"modifica\" type=\"button\">Modifica</button></td><td><button id=\"cancella\" type=\"button\">Cancella</button></td></tr>";
}
echo "</table>";

然后,我有这个JQuery:

$("#cancella").click(function(){
    if(confirm("Vuoi davvero eliminare questi dati?")){
        var codice = <?php echo json_encode($cod); ?>;
        var tipo = <?php echo json_encode($tipo_opera); ?>; 
        window.location.href = "delete.php?codice="+codice+"&tipo="+tipo;
    }
 });

此点击功能仅适用于&#34;删除&#34;第一行的按钮。为什么呢?

3 个答案:

答案 0 :(得分:2)

id是唯一的,因此只能分配给一个element

使用class

<button class=\"cancella\" type=\"button\">Cancella</button>

$(".cancella").click(function(){
 // Do Something.
});

替代:

<button type=\"button\" onclick=\"cancella()\">Cancella</button>

function cancella(){}

答案 1 :(得分:0)

<button id=\"cancella\" type=\"button\">Cancella</button>

需要是一个不是id的类

答案 2 :(得分:0)

id应该是唯一的,如果在您的DOM结构中重复,那么您将面临问题。使用类cancella,然后定义一些数据属性,以便在需要时识别特定元素。

所以你的代码将是......

在Html中

echo "<tr><td>".$row["Codice"]."</td><td>".$row["Titolo"]."</td><td>".$row["Anno_creazione"]."</td><td>".$row["Materiale"]."</td><td>".$row["Altezza"]."</td><td>".$row["Peso"]."</td><td>".$row["Museo"]."</td><td><button id=\"modifica\" type=\"button\">Modifica</button></td><td><button data-myid=".$row['id']." class='cancella' type=\"button\">Cancella</button></td></tr>";

在JS中

$(".cancella").click(function(){
  if(confirm("Vuoi davvero eliminare questi dati?")){
    var particular_element = $(this).attr('data-myid');
  }
});

此外,如果您要动态添加“更多”元素,则应使用$(document).on('click', '.cancella', function(){});代替$(".cancella").click(),希望它有所帮助。