0

動的に作成されるテーブルがあり、各行にonclickイベントを含むEDIT/DELETEボタンを配置したいと思います。

ただし、行のIDで一意にし、それぞれに対してonclickイベントを作成して、行の値を更新/削除する方法がわかりません。

私は試した:

<INPUT TYPE='BUTTON' NAME='EDIT_PRODUCT_FROM_SEARCH' ID=".$row['alpha_p_ID']." VALUE='Delete'>

しかし、私はイベントを伝える方法がわかりません:

$('what to write here?').click(function() {

});

編集:

ボタンの作成は機能しますが、onclickイベントは機能しません。以下のコード:

PHPボタンコード

results_table = "<table cellspacing='0' style='border: 1px solid #405D99'><tr bgcolor='#405D99' style='color: white'><th>Main Image</th><th>Gallery Image 1</th><th>Gallery Image 2</th><th>Name</th><th>Type</th><th>Manufacturer</th><th>Quantity</th><th>Price-Wholesale</th><th>Price-Retail</th><th>Options</th></tr>";
while($row = mysql_fetch_array($results)){
$results_table .= "<tr>";
$results_table .= "<td bgcolor='#dfe3ee'><a href='products/".$row['alpha_p_imglink_main']."' rel='lightbox'><img src='products/".$row['alpha_p_imglink_main']."' width='150px' height='150px'; border='0'/></a></td>";
$results_table .= "<td bgcolor='#dfe3ee'><a href='products/".$row['alpha_p_imglink_gal1']."' rel='lightbox'><img src='products/".$row['alpha_p_imglink_gal1']."' width='150px' height='150px'; border='0'/></a></td>";
$results_table .= "<td bgcolor='#dfe3ee'><a href='products/".$row['alpha_p_imglink_gal2']."' rel='lightbox'><img src='products/".$row['alpha_p_imglink_gal2']."' width='150px' height='150px'; border='0'/></a></td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_name_en]</td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_type]</td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_firm_owner]</td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_quantity]</td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_price_wholesale]</td>";
$results_table .= "<td bgcolor='#dfe3ee' align='center'>$row[alpha_p_price_retail]</td>";
$results_table .= "<td colspan='1' rowspan='1' bgcolor='#f7f7f7' align='center'>";
$results_table .= "<a href='#' NAME='EDIT_PRODUCT_FROM_SEARCH' ID=".$row['alpha_p_ID']." CLASS='EDIT_BUTTON_CLASS'>Edit</a>";
$results_table .= "<a href='#' NAME='DEL_PRODUCT_FROM_SEARCH' ID=".$row['alpha_p_ID']." CLASS='DELETE_BUTTON_CLASS'>Delete</a>";
$results_table .= "</tr>";
}
echo "Query: " . $query . "<br />";
$results_table .="</table>";
echo $results_table;

オンクリック:

                        $('.EDIT_BUTTON_CLASS').on("click", function(event) {
                    var e_id = $(this).attr('id');
                    var p_edit_id = $('input[name=P_NAME_EDIT]');
                    (p_edit_id).val(e_id);
                    alert("aaa");
                    });

onclickイベントは、テキストボックスにIDを入力し、アラートを投稿する必要があります。

4

6 に答える 6

3

1つのアイデアは変更することです

<INPUT TYPE='BUTTON' NAME='EDIT_PRODUCT_FROM_SEARCH' ID="'.$row['alpha_p_ID'].'" VALUE='Delete'>

echo '<INPUT TYPE="BUTTON" NAME="EDIT_PRODUCT_FROM_SEARCH" ID=".$row['alpha_p_ID']." 
onclick="your_js_delete_function('.$row['alpha_p_ID'].');" VALUE="Delete">'

その後、JSで

function yourj_s_delete_function(id) {
  //do something
  // you could also id = $(this).attr('id');
}

クラスを割り当てて、

$('what to write here?').click(function() {

});

になります

$('.delete_button').click(function() {
   var id = $(this).attr('id');
   .... rest of the code
});

注:$row['alpha_p_id']数値を返す場合は、プレフィックスとして文字列値を追加することをお勧めします。数値のみのIDを使用すると、マークアップの検証が失敗するためです。

だからあなたはに変更ID="'.$row['alpha_p_ID'].'"しますID="btn_'.$row['alpha_p_ID'].'"

変更する必要があります

var id_str = $(this).attr('id');
var id=id_str.split("_", 1);

アップデート

これらのボタンは動的に作成されると述べたようon()に、「クリック」の代わりに「メソッド」を使用する必要があります。

$('.delete_button').on("click", function(event){
    alert("I am clicked!");
});

http://api.jquery.com/on/

于 2012-08-22T12:45:49.573 に答える
2

イベントをすべてにバインドしてinput[type="button"]から、別の属性からID値を取得できます。例えば:

$('input[type="button"]').click(function() {
    $id = $(this).id;
    $action = $(this).val();
});
于 2012-08-22T12:42:55.157 に答える
0

jQueryのattr()メソッドを使用して、イベントを生成した要素のIDにアクセスできます。

<input class='mybutton' type='button' name='edit_product_from_search' id=".$row['alpha_p_id']." value='delete'>

およびjQueryコード:

$('.mybutton').click(function() {
    id = $(this).attr('id');
});

jQueryの$(this)は、イベントを生成した要素を参照します。

于 2012-08-22T12:44:49.390 に答える
0

入力にクラスを与えると、セレクターを使用できます

var buttons = $('.classname');

このボタンの配列を使用すると、次のことができるようになります。

$.each(buttons, function(){
    $(this).click(function(){
         // Click event here
    }
});
于 2012-08-22T12:45:08.747 に答える
0
$("#<?php print $row['alpha_p_ID'] ?>").click(function() {

});
于 2012-08-22T12:46:31.200 に答える
-1

または、属性class="delete"をボタンに追加します

<INPUT TYPE='BUTTON' NAME='EDIT_PRODUCT_FROM_SEARCH' ID=".$row['alpha_p_ID']." class="delete" VALUE='Delete'>

その後

$('.delete').click(function(){
  id = $(this).attr('ID');

  // delete code goes here...

});
于 2012-08-22T12:48:35.913 に答える