Ajax jQuery最佳实践:避免内联脚本?然后我如何传递变量

时间:2011-03-04 05:45:31

标签: jquery ajax inline-scripting

我刚刚阅读了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; ?>" />

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以执行一些操作,其中一项是使用自定义属性,例如data-product-iddata-前缀符合我认为的HTML5规范。)

尽管如此,您也可以input id product-343$(this)[0].id.replace(/\D/g, ''); ,然后使用...

this

(假设input指向{{1}}元素。)

答案 1 :(得分:2)

使用data-前缀属性。 http://jsfiddle.net/zJWfB/

答案 2 :(得分: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>