我对jQuery的live()函数有一个问题。
我正在使用PHP创建购物篮,并对php脚本进行json调用以将特定的商品添加到购物篮中。
这是我的电话:
if ($('.add_to_basket').length > 0) {
$('.add_to_basket').live('click', function() {
var button = $(this);
var id = $(this).attr("rel");
$.getJSON("/basket/action/add/id/" + id, function(data) {
if (!data.error) {
$('.basket_no_of_items').text(data.no_of_items);
$('.basket_items_total').text(data.total);
button.text('Remove from the basket');
}
});
return false;
});
}
你知道我可能做错了什么吗?
我已经检查过firebug,它似乎只将请求发送到/basket/action/add -没有id位。
发布于 2011-04-04 09:27:42
使用live()
的整个思想是在事件发生时注册函数(例如,单击)一组元素,无论它们在创建函数时是否存在。
添加($('.add_to_basket').length > 0)
将检查这组特定的元素是否存在。根据我上面的描述,这是适得其反的。所以,要么:
($('.add_to_basket').length > 0)
,这应该适用于所有人。将.add_to_basket
元素$('.add_to_basket').live('click', function() {...});
美元(“.将$('.add_to_basket').click(function() {...});
)并用$(document).ready()
将其包裹起来。ready()以确保在将函数注册到click时已加载所有DOM元素。希望这是有意义的。
Sumit
发布于 2011-04-04 07:56:15
尝试删除"length“检查,我打赌它会干扰.live()函数。
发布于 2011-04-04 12:49:31
将$.getJSON("/basket/action/add/id/" + id, function(data) {})
更改为$.getJSON("/basket/action/add/id/" ,{ pid : id}, function(data) {})
https://stackoverflow.com/questions/5535749
复制