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

您可以做一些事情,其中​​之一是使用自定义属性,例如data-product-iddata-我相信前缀在 HTML5 规范中)。

不过,您也可以给它input一个id诸如product-343然后使用...获取ID

$(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 回答