Ajax jQuery最佳实践:避免内联脚本??那么如何传递变量呢

Ajax jQuery最佳实践:避免内联脚本??那么如何传递变量呢,jquery,ajax,inline-scripting,Jquery,Ajax,Inline Scripting,我刚刚在一篇关于jquery和ajax的最佳实践文章中读到,我应该避免使用内联脚本为页面上的元素定义行为。这是有道理的,因为它使代码非常可读 然而,我想问,如果我需要将服务器端变量传递给javascript,那么我应该怎么做。比如考虑下面的代码… <?php foreach($product as $product_id): ?> <input type="button" value="Delete Favorite" onclick="delete_favorite('<

我刚刚在一篇关于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; ?>" />

有什么建议吗?

您可以做一些事情,其中之一是使用自定义属性,例如数据产品id数据-前缀在HTML5规范中,我相信

尽管如此,您也可以给该输入一个id,如product-343,然后使用

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

假设这指向一个输入元素。

您可以做一些事情,其中之一是使用自定义属性,例如数据产品id数据-我相信前缀在HTML5规范中

尽管如此,您也可以给该输入一个id,如product-343,然后使用

$(this)[0].id.replace(/\D/g, '');
假设这指向一个输入元素。

试试这个:

<?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>
试试这个:

<?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>

使用数据前缀属性

使用数据前缀属性

我经常这样做-只是一个方便的注释,\D与[^0-9]相同:直观的正则表达式?祝你好运:P+1与我的建议类似:在某种程度上,我想:这是我经常做的事情-只是一个方便的提示,\D与[^0-9]相同:直观的正则表达式?祝你好运:P+1与我的建议类似:在某种程度上,我想:+1非常周到。正是我要找的东西。谢谢。我想得很周到。正是我要找的东西。谢谢