jQuery从AJAX的循环数据中获取属性值。

我们先来设置一下结构。

message.php

<div class="msgcontent content" id="bodycontent">
  <div class="getmsglist"></div>
</div>
<script>    
  setInterval(function(){
    $('.getmsglist').load('processes/messagelist.php');
  }, 500);
</script>

消息列表.php

<?php while($mat = $stmt->fetch()){ ?>
  <div class="messagebox" this-chat="<?php echo $mat['mem_id']; ?>">
      // Other Stuffs
  </div>
<?php } ?>

所以上面我们可以看到,在 message.php 数据加载到的页面 getmsglist 离间 messagelist.php 页。在 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") 在这里不起作用,它对所有的行返回相同的用户ID。我试过用”$(this) “代替,但是返回的是 undefined 因为它试图获取div”.msgcontent “的属性,而这个属性是不存在的。我如何才能在所有行中获取不同的属性值?

解决方案:

而不是请求所有的 $('.messagebox') 你应该能够选择一个单一的 .messagebox 通过将点击处理程序委托给 .on().

$('.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');

如果你需要一个整数而不是字符串,数据属性会自动转换。但首先尝试在控制台日志中实际获取你的对象。

给TA打赏
共{{data.count}}人
人已打赏
未分类

kubernetes无法在VirtualCenter部分存储数据,分节变量insecure-flag。

2022-9-13 13:01:39

未分类

dbCommand.Append语法错误,用@参数将EQUALS转换为LIKE。

2022-9-13 13:01:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索