1

インラインスクリプトを使用してページ上の要素の動作を定義することは避けるべきであるというjqueryとajaxのベストプラクティスの記事を読んだばかりです。コードが非常に読みやすくなるので、それは理にかなっています。

ただし、サーバー側の変数をjavascriptに渡す必要がある場合は、どうすればよいかを尋ねたいと思います。次のコードを考えてみましょう...

<?php foreach($product as $product_id): ?>
<input type="button" value="Delete Favorite" onclick="delete_favorite('<?php echo $product_id; ?>')" />
<?php endforeach; ?>

そのような場合、非表示のフォーム値を使用する必要がありますか?または、動作を定義している要素のIDにサーバー側変数を追加することを追加している可能性がありますか?そのようです..

<input type="button" value="Delete Favorite" id="button<?php echo $product_id; ?>" />

助言がありますか?

4

3 に答える 3

3

できることはいくつかありますが、そのうちの1つは、次のようなカスタム属性を使用することですdata-product-iddata-プレフィックスはHTML5仕様にあると思います)。

ただし、などを指定して、...を使用してIDを取得することもinputできidますproduct-343

$(this)[0].id.replace(/\D/g, '');

this(要素を指すと仮定しinputます)。

于 2011-03-04T05:48:12.303 に答える
2

data-プレフィックス属性を使用します。http://jsfiddle.net/zJWfB/

于 2011-03-04T05:52:44.847 に答える
1

これを試して:

<?php foreach($product as $product_id): ?>
    <input id="fav-<?php echo $product_id; ?>" class="prod-fav" type="button" value="Delete Favorite"/>
<?php endforeach; ?>

<script type="text/javascript">
    $(function(){
        $(".prod-fav").click(function(){
                    var $this = $(this);
            var id = $(this).attr("id").replace(/[^0-9]/g, "");
            delete_favorite(id); // Call delete_favorite or
                    //delete_favorite.call($this, id); //To retain the calling element context or
                    // implement you delete function right here..
        });
    });

</script>
于 2011-03-04T05:52:27.510 に答える