我刚刚阅读了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; ?>" />
有什么建议吗?
答案 0 :(得分:3)
您可以执行一些操作,其中一项是使用自定义属性,例如data-product-id
(data-
前缀符合我认为的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>