我正在学习jquery。我写了一个剧本,但没有用
1我的HTML
<ul id="recur" class="elasticstack">
<li id=<?=$item['id']?>>.......</li>
....................................
</ul>2我的jquery函数
function viewDetails()
{
$('#recur>li').live(function(){
var id = $(this).attr('id');
$.ajax({
url:'myUrl'
,type:'post'
,dataType:'json'
,data:{propertyId:id}
,success:function(data){
console.log(data);
}
});
});
}我的错误在哪里?谢谢大家!
发布于 2014-05-23 02:06:01
我想你在相同的html中有更多的id "recur“。查看jquery库版本以获得活动函数。您可以使用1.8版本的库
发布于 2014-05-23 02:13:32
首先,您忽略了要为每个<li>元素处理的事件。假设现在点击..。
如果您使用的是jQuery > 1.9,则不能使用.live()。相反,将.on()与事件委托一起使用
$('#recur').on('click', 'li', function(e) {
var id = this.id;
$.ajax({
url: 'myUrl',
type: 'POST',
dataType: 'json',
data: {propertyId: id}
}).done(function(data) {
console.log(data);
});
});发布于 2014-05-23 02:24:31
您缺少id中的引号。试试这个:
<ul id="recur" class="elasticstack">
<li id="<?=$item['id']?>">.......</li>
</ul>你不能拿到身份证因为不在那里。
完成jQuery部分的更好方法是:
function viewDetails(){
$('#recur').find('li).each(function(){
$(this).on('click', function(){
var id = $(this).attr('id');
$.ajax({
url:'myUrl'
,type:'post'
,dataType:'json'
,data:{propertyId:id}
,success:function(data){
console.log(data);
}
});
});
});
}不要使用.live()方法。现在不受欢迎了。使用.find()方法可以获得更好的性能。
如果您正在添加项,并且希望每次添加项时都显示数据,则可以使用livequery.js插件,如下所示:
function viewDetails(){
$('#recur li').livequery(function(){
var id = $(this).attr('id');
$.ajax({
url:'myUrl'
,type:'post'
,dataType:'json'
,data:{propertyId:id}
,success:function(data){
console.log(data);
}
});
});
}https://stackoverflow.com/questions/23819875
复制相似问题