2011-12-21 38 views
0

我有一個輸入按鈕:識別jQuery的按一下按鈕在php行

while ($row = $result->fetch()) { 
echo '<table class="cart-row" cellspacing="0" cellpadding="0" width="100%">'; 
echo '<tbody>'; 
echo '<tr>'; 
echo '<td width="75"><img border="0" width="59px" height="78px" title="" alt="" src=' . $row["ImagePath"] .'></td>'; 
echo '<td width="203"><span id="itemName" class="itemElements">'. $row["Name"] .'</span></td>'; 
echo '<td width="135"><span id="qtyNum">('. $row["Qty"] .')</span> <br />'; 
echo '<span id="qtyRemoveLink"><input class="linkbtn" type="submit" id="btnRemove" value="Remove"></td>';        
echo '<td width="180"><span id="orderStatus" class="itemElements">In Stock Usually dispatched within 24 hours</span></td>'; 
echo '<td width="175" id="itemPriceRow"><span id="itemPrice">€ '. $row["Price"] .'</span></td>'; 
echo '</tr>'; 
echo '</tbody>'; 
echo '</table>'; 
echo '<br>';        
} 

我試圖用這個方法來觸發按鈕時,不過點擊事件只被解僱的事件在第一行中生成第一個按鈕。我正在使用此方法:

$(document).ready(function() { 
       $('#btnRemove').click(function() { 
        alert("test"); 
       }); 
      }); 

任何想法如何解決此問題?我知道在C#中有行數據綁定方法,但是在jQuery中我現在不存在如果它存在。謝謝

+0

正如在下面的評論中提到的 - 你在所有地方使用的ID不正確。這對您的特定情況造成了問題,但您還需要更新所有標記以正確使用ID(或實際上,不使用ID)。 – 2011-12-21 21:23:08

回答

3

您正在選擇一個元素來綁定具有唯一ID的click事件處理程序。當您通過ID選擇時,您將僅返回第一個匹配元素,因爲它是一個有效的ID,它必須是唯一的。

將ID更改爲類,並將您的選擇器更改爲.btnRemovealert將適用於所有按鈕。

echo '<span id="qtyRemoveLink"><input class="linkbtn" type="submit" id="btnRemove" value="Remove"></td>'; 

應更改爲:

echo '<span id="qtyRemoveLink"><input class="linkbtn btnRemove" type="submit" value="Remove"></td>'; 

和:

$('#btnRemove').click(function() { 

應更改爲:

$('.btnRemove').click(function() { 

這裏是一個演示:http://jsfiddle.net/rSyCw/

下面是關於建立有效的HTML標識的網站上的出色答卷:What are valid values for the id attribute in HTML?

+1

是的,並且還有許多其他實例在被重用的ID示例代碼中(即不唯一)。 OP應該在他進行時修復這些問題。 ;-) – 2011-12-21 21:22:06

2

使用的按鈕,而不是一個ID類。 ID是唯一的標識符(只能在整個頁面上使用該名稱),但是類可以應用於多個元素。所以......

<input type="submit" id="btnRemove" /> 

變爲

<input type="submit" class="btnRemove" /> 

而且,正因爲如此,你的選擇更改.btnRemove

而且,現在您知道ID必須是唯一的,您應該繼續並重新配置輸出以使用類,或者使用帶有唯一ID的ID。例如

<?php 
    while ($row = $result->fetch()){ 
?> 
    <!-- Other HTML --> 
    <input type="submit" id="btnSubmit_<?= $row['Unique_Column_Id']; ?>" ... /> 

然後你就可以修改您的選擇:

$('[id^="btnSubmit_"]').click(...); // All elements with an 
            // ID that starts with "btnSubmit_" 
+0

是的,我怎麼會忘記!感謝您幫助我現在的作品! – 2011-12-21 21:23:15

+0

使用類而不是使用僞選擇符(正則表達式)來處理字符串的性能要好得多。在可能的情況下,jQuery使用'getElementByClassName()',這個速度非常快,但只有按類選擇時纔有效。 – Jasper 2011-12-21 21:28:15

+0

@Jasper:我同意,但只是顯示另一種方法。 – 2011-12-21 21:32:42

0

一個紅色這裏的標誌是,你正在生成與你每次循環相同ID的多個元素。元素ID在文檔中必須是唯一的。我的猜測是,jQuery只綁定到ID爲「btnRemove」的第一個元素,因爲它假定你的ID是唯一的。

正如其他人所指出的,使用這個按鈕,一個類名,將有助於你的問題,但你還是應該想出一個辦法把唯一的ID在你itemNameqtyNumqtyRemoveLinkorderStatusitemPriceRow,並且itemPrice元素,和其他任何你可能使用這種技術。