jQuery on()方法绑定动态元素的点击事件
我正在做一个商城相关的项目,需要用到购物车。购物车的数据我存在了session里,但是在前端需要实时更新购物车的数据,所以动态的创建了元素。
在jquery中,要给动态元素绑定事件,我使用了on方法,但是该方法一直不生效,必须刷新页面才能删除购物车的数据,请大家帮忙看看。
项目使用的是ThinkPHP框架。
/**
*
* @authors tudouya (http://www.php101.cn/)
* @date 2015-04-08 01:37:39
* @version $1.0$
*/
namespace Mall\Controller;
use Think\Controller;
class CartController extends Controller {
public function __construct(){
parent::__construct();
// session(null);
if(!isset($_SESSION['cart'])){
$_SESSION['cart'] = array();
}
}
public function index(){
kd($_SESSION);
}
public function addItem(){
/*
* TODO --- 安全方面的考虑
*/
$good_id = intval(I('post.good_id'));
if(isset($_SESSION['cart'][$good_id])){
$_SESSION['cart'][$good_id]['good_num'] += 1;
$html = '';
$total_price = 0;
foreach($_SESSION['cart'] as $k=>$v){
$total_price += $v['good_price']*$v['good_num'];
$html .= '
';}
$html .= '
exit($html);
}
$good_name = I('post.good_name');
$good_price = I('post.good_price');
$good_image = I('post.good_image');
$good_num = intval(I('post.good_num'));
$good = compact('good_id', 'good_name', 'good_price', 'good_image', 'good_num');
$_SESSION['cart'][$good_id] = $good;
$html = '';
$total_price = 0;
foreach($_SESSION['cart'] as $k=>$v){
$total_price += $v['good_price']*$v['good_num'];
$html .= '
';}
$html .= '
exit($html);
}
public function removeItem(){
$good_id = intval(I('post.good_id'));
unset($_SESSION['cart'][$good_id]);
$html = '';
$total_price = 0;
foreach($_SESSION['cart'] as $k=>$v){
$total_price += $v['good_price']*$v['good_num'];
$html .= '
';}
$html .= '
exit($html);
}
}
?>
$total_price = 0;
foreach($_SESSION['cart'] as $k=>$v){
$total_price += $v['good_price']*intval($v['good_num']);
?>
商品数量: <?php echo count($_SESSION['cart']); ?>
Total: ¥<?php echo $total_price; ?>
$(function(){
remove_url = "{:U('mall/cart/removeitem')}";
$('#shoppingCartWrapper').find('.shoppingCartRemoveProductButton').on('click',function(){
good_id = $(this).prev().prev().val();
$.ajax({
'url': remove_url,
'type': 'post',
'data': {'good_id': good_id},
'success': function(data){
$('#shoppingCartButtons').prevAll().remove();
$('#shoppingCartButtons').before(data);
}
});
});
});
线上演示地址:
http://weixin.chenfw.me/mall/index
相关阅读:
Linux中调用setsockopt()返回-1,errno=92 求解决
NSStackBlock?的内存的一个疑问
commons-logging与log4j有什么区别与联系呢?
pyspider demo.pyspider.org正常运行 本地报错怎么办?windows 10系统
计算机时钟频率加快,有会有什么影响?
高并发实时系统涉及到多线程处理,这样合理么?
angualrjs在service中get请求能得到数据,但是为什么却无法返回到控制器当中使用?
jquery的css({'background':'red'}),是如何对{}进行处理的
nodejs终端命令行模式怎么退出
启动jetty容器报错,com.acme.TestFilter类找不到
半边结构读入obj文件 没有对应的半边
GB18030和UTF-8有啥区别
php curl出错,大神帮忙看下啊!
js中对象的属性不能关联其他属性值吗
intellij idea 参数可以自动提示么?
C#中 System.Windows.Documents.Table 控件如何设置垂直居中 ?
请教Mongoose嵌套数据Schema定义问题?
如何检测客户端被电信运营商劫持情况,然后做处理
bootstrap 网站上提供的 font awesome 对火狐不友好,怎么解决
shell 如何随机读取文件的一行?