JavaScript嵌套函数,单击时仅返回第一个div的id

JavaScript嵌套函数,单击时仅返回第一个div的id,javascript,php,jquery,Javascript,Php,Jquery,我有一个函数,它在调用ajax时返回,但是该函数只返回post中第一个div的id,并为下一个元素或div标记重复相同的id号。但是,当使用指定的$(this)单击函数时,它返回其他元素的唯一div。请帮忙。这是密码 $(文档)。在(“单击”、“.likeTypeAction”上,函数(){ var reaction_id=$('.likeTypeAction'); var reactionType=$(this.attr(“数据反应”); var reactionName=$(this.att

我有一个函数,它在调用ajax时返回,但是该函数只返回post中第一个div的id,并为下一个元素或div标记重复相同的id号。但是,当使用指定的$(this)单击函数时,它返回其他元素的唯一div。请帮忙。这是密码

$(文档)。在(“单击”、“.likeTypeAction”上,函数(){
var reaction_id=$('.likeTypeAction');
var reactionType=$(this.attr(“数据反应”);
var reactionName=$(this.attr(“原始标题”);
var rel=$(this.parent().parent().attr(“rel”);
var x=$(this.parent().parent().attr(“id”);
var sid=x.分裂(“反应”);
变量id_post=sid[1];
var htmlData=''+reactionName;
var dataString='id_post='+id_post+'&rid='+reactionType;
$.ajax({
url:“ajaxReaction”,
类型:“post”,
数据:{“完成”:1,“id_post”:id_post,“rid”:reactionType},
beforeSend:函数(){
警报(id_post);
},
成功:功能(数据){
显示反应();
},
});
});
函数displayReaction(){
a=$(“#reactionEmoji”);
var cls=$(this.a).parent().attr('class');
var n=cls.拆分(“反应”);
var reactionNew=n[1];
$.ajax({
url:“ajaxReaction”,
类型:“post”,
数据:{
“getReaction”:1,“reactionNew”:reactionNew
},
beforeSend:函数(){
警报(reactionNew);
},
成功:功能(数据){
}
})
}
myInstance=新的displayReaction();
echo'
没有什么
';
回声';
回声'
';

您的代码有几个问题

我假设您提供的PHP代码是在某种循环中:$id_post建议您循环一些数据并为每个帖子打印此HTML

如果它在一个循环中,那么在文档中,每个循环都有:

<div id="reaction" class="reaction' . $id_post . '">
    <div id="reactionEmoji">nothing</div>
</div>
在下面的片段中:

  • 我用3个HTML生成的代码替换了您的PHP代码
  • 我添加了一些标签来替换你的图标(我们没有你的CSS)
  • 我使两个div id都是唯一的
  • 我更正了您的
    displayReaction
    函数,以便它将要显示的反应id作为参数
我不确定它是否做了您希望它做的事情,但它应该可以帮助您解决您的问题

$(document).on(“click”、“.likeTypeAction”,function())
{
var reaction_id=$('.likeTypeAction');
var reactionType=$(this.attr(“数据反应”);
var reactionName=$(this.attr(“原始标题”);
var rel=$(this.parent().parent().attr(“rel”);
var x=$(this.parent().parent().attr(“id”);
var sid=x.分裂(“反应”);
变量id_post=sid[1];
var htmlData=''+reactionName;
var dataString='id_post='+id_post+'&rid='+reactionType;
显示反应(id_post);
/*
$.ajax({
url:“ajaxReaction”,
类型:“post”,
数据:{“完成”:1,“id_post”:id_post,“rid”:reactionType},
beforeSend:function(){alert(id_post);},
成功:功能(数据){
},
});*/
});
功能显示反应(id\U post){
a=$(“#反应moji”+id#U post);
var cls=$(this.a).parent().attr('class');
var n=cls.拆分(“反应”);
var reactionNew=n[1];
$.ajax({
url:“ajaxReaction”,
类型:“post”,
数据:{
“getReaction”:1,“reactionNew”:reactionNew
},
beforeSend:function(){
警报(reactionNew);
},
成功:功能(数据){
}
})
}

没有什么
喜欢
张惠妹
哈哈
Uau
三态
Grr
没有什么
喜欢
张惠妹
哈哈
Uau
三态
Grr
没有什么
喜欢
张惠妹
哈哈
Uau
三态
Grr

请实际发布您的代码我很抱歉,我是新来的好,谢谢!我将编辑它
var-reaction_-id=$('.likeTypeAction')-这只是在整个文档中进行选择,对当前上下文没有任何限制。无论如何,这没有多大意义,因为您的委派事件从一开始就绑定到该类,所以
$(此)
将引用该类。首先,感谢您的回复。CBroe,div都通过php生成了它们唯一的post id。第一个java脚本代码完全按照它应该做的做,即用关联的数字分割div反应。但是,嵌套函数应该是第二个调用,它只选择第一个元素的div,因为对于每个div,它只获取文档中第一个div的id。感谢您的即时响应,我将尝试一下,然后返回给您您您提供的上述代码,运行良好。然而,这不是我曾经遇到过的问题。第二个函数displayReaction(){应该是第一个函数被单击时的输出,第二个函数向mysql数据库发送一个请求以获取结果。但是我遇到的问题是,对于第二个函数$中的每个post id(此)是用第一个来提醒我的,这是其他所有标记的一个。好吧,这就是我试图用我在回答中描述的更改来解决的问题。检查代码片段,这些提醒来自“第二个”我的函数告诉我未捕获的类型错误:无法读取未定义的属性“split”谢谢!我没有替换我的html wi
function displayReaction() {
    a = $("#reactionEmoji");
    var cls = $(this.a).parent().attr('class');
    var n = cls.split("reaction");
    var reactionNew = n[1];
    /* .... */
    alert(reactionNew);
}