jQuery 在来自 AJAX 的循环数据中获取属性值
jQuery getting value of attribute inside while loop data coming from AJAX
我们先来搭建结构。
message.php
<div class="msgcontent content" id="bodycontent">
<div class="getmsglist"></div>
</div>
<script>
setInterval(function(){
$('.getmsglist').load('processes/messagelist.php');
}, 500);
</script>
messagelist.php
<?php while($mat = $stmt->fetch()){ ?>
<div class="messagebox" this-chat="<?php echo $mat['mem_id']; ?>">
// Other Stuffs
</div>
<?php } ?>
所以在上面我们可以看到,在 message.php
页面中,数据从 messagelist.php
页面加载到 getmsglist
div。在 messagelist.php
上,属性 this-chat
包含用户 ID。我希望通过 AJAX 获取此用户 ID。目前,我尝试为所有行返回相同的用户 ID。我需要解决这个问题。
我试过的...!
$(".msgcontent").click(function() {
var memid = $(".messagebox").attr("this-chat"); // doesn't work (fetches same id for all rows)
//var memid = $(this).children(".messagebox").attr("this-chat"); // this returned undefined as well
var dataString = {
memid: memid
};
console.log(dataString);
});
$(".messagebox")
在这里不起作用,它 returns 所有行的用户 ID 相同。我尝试了“$(this)”,但它返回了 undefined
,因为它试图获取不存在的 div“.msgcontent”的属性。我怎样才能为所有行获取不同的属性值?
通过使用 .on().
委派点击处理程序,您应该能够 select 一个 .messagebox
而不是请求所有 $('.messagebox')
$('.msgcontent').on('click', '.messagebox', function() {
var memid = $(this).attr('this-chat');
var dataString = { memid: memid };
console.log(dataString);
});
这样您的点击处理程序将绑定到容器 .msgcontent
但委托给 .messagebox
。这样可以在加载实际内容之前绑定处理程序。
现在我不能完全确定自定义属性 this-chat
。使用 data-chat
.
更符合逻辑
var memid = $(this).data('chat');
如果您需要整数而不是字符串,数据属性将自动转换。但首先尝试在控制台日志中实际获取您的对象。
我们先来搭建结构。
message.php
<div class="msgcontent content" id="bodycontent">
<div class="getmsglist"></div>
</div>
<script>
setInterval(function(){
$('.getmsglist').load('processes/messagelist.php');
}, 500);
</script>
messagelist.php
<?php while($mat = $stmt->fetch()){ ?>
<div class="messagebox" this-chat="<?php echo $mat['mem_id']; ?>">
// Other Stuffs
</div>
<?php } ?>
所以在上面我们可以看到,在 message.php
页面中,数据从 messagelist.php
页面加载到 getmsglist
div。在 messagelist.php
上,属性 this-chat
包含用户 ID。我希望通过 AJAX 获取此用户 ID。目前,我尝试为所有行返回相同的用户 ID。我需要解决这个问题。
我试过的...!
$(".msgcontent").click(function() {
var memid = $(".messagebox").attr("this-chat"); // doesn't work (fetches same id for all rows)
//var memid = $(this).children(".messagebox").attr("this-chat"); // this returned undefined as well
var dataString = {
memid: memid
};
console.log(dataString);
});
$(".messagebox")
在这里不起作用,它 returns 所有行的用户 ID 相同。我尝试了“$(this)”,但它返回了 undefined
,因为它试图获取不存在的 div“.msgcontent”的属性。我怎样才能为所有行获取不同的属性值?
通过使用 .on().
委派点击处理程序,您应该能够 select 一个.messagebox
而不是请求所有 $('.messagebox')
$('.msgcontent').on('click', '.messagebox', function() {
var memid = $(this).attr('this-chat');
var dataString = { memid: memid };
console.log(dataString);
});
这样您的点击处理程序将绑定到容器 .msgcontent
但委托给 .messagebox
。这样可以在加载实际内容之前绑定处理程序。
现在我不能完全确定自定义属性 this-chat
。使用 data-chat
.
var memid = $(this).data('chat');
如果您需要整数而不是字符串,数据属性将自动转换。但首先尝试在控制台日志中实际获取您的对象。