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

席尔瓦·奥尼尔

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

$(document).on("click", ".likeTypeAction", function () {
    var reaction_id = $('.likeTypeAction');
    var reactionType = $(this).attr("data-reaction");
    var reactionName = $(this).attr("original-title");
    var rel = $(this).parent().parent().attr("rel");
    var x = $(this).parent().parent().attr("id");
    var sid = x.split("reaction");
    var id_post = sid[1];
    var htmlData = '<i class="' + reactionName.toLowerCase() + 'IconSmall likeTypeSmall" ></i>' + reactionName;
    var dataString = 'id_post=' + id_post + '&rid=' + reactionType;

    $.ajax({
        url: 'ajaxReaction',
        type: "post",
        data: {"done": 1, "id_post": id_post, "rid": reactionType},
        beforeSend: function () {
            alert(id_post);
        },
        success: function (data) {
            displayReaction();
        },

    });
});

function displayReaction() {
    a = $("#reactionEmoji");
    var cls = $(this.a).parent().attr('class');
    var n = cls.split("reaction");
    var reactionNew = n[1];

    $.ajax({
        url: 'ajaxReaction',
        type: "post",
        data: {
            "getReaction": 1, "reactionNew": reactionNew
        },
        beforeSend: function () {
            alert(reactionNew);
        },
        success: function (data) {

        }
    })
}

myInstance = new displayReaction();
echo '<div id="reaction" class="reaction' . $id_post . '">
    <div id="reactionEmoji">nothing</div>
</div>';
echo'<div class="reaction-action">';
echo '<div rel="unlike" c="undefined" id="reaction' . $id_post . '" class="likeDiv">
    <div class="tooltipster-content">
        <span class="likeTypeAction" original-title="Like" data-reaction="1">
            <i class="likeIcon likeType"></i>
        </span>
        <span class="likeTypeAction" original-title="Amei" data-reaction="2">
            <i class="ameiIcon likeType"></i>
        </span>
        <span class="likeTypeAction" original-title="Haha" data-reaction="3">
            <i class="hahaIcon likeType"></i>
        </span>
        <span class="likeTypeAction" original-title="Uau" data-reaction="4">
            <i class="uauIcon likeType"></i>
        </span>
        <span class="likeTypeAction" original-title="Triste" data-reaction="5">
            <i class="tristeIcon likeType"></i>
        </span>
        <span class="likeTypeAction last" original-title="Grr" data-reaction="6">
            <i class="grrIcon likeType"></i>
        </span>
    </div>
    <div class="tooltipster-arrow-top tooltipster-arrow" style="">
        <span class="tooltipster-arrow-border" style="margin-bottom: -1px; border-color: rgb(222, 222, 222);"></span>
        <span style="border-color:rgb(255, 255, 255);"></span>
    </div>
</div>';
纪尧姆·乔治

您的代码有几个问题。

我想您提供的 PHP 代码处于某种循环中:$id_post 建议您遍历一些数据并为每个帖子打印此 HTML。

如果它在循环内,您将在文档中为每个循环添加:

<div id="reaction" class="reaction' . $id_post . '">
    <div id="reactionEmoji">nothing</div>
</div>

不能有多个具有相同 id 的 HTML 元素。

由于您reactionEmojidisplayReaction函数中使用了id ,因此您可能需要修复该问题:

function displayReaction() {
    a = $("#reactionEmoji");
    var cls = $(this.a).parent().attr('class');
    var n = cls.split("reaction");
    var reactionNew = n[1];
    /* .... */
    alert(reactionNew);
}

在下面的片段中:

  • 我用 3 个 HTML 生成的代码替换了您的 PHP 代码
  • 我添加了一些标签来替换您的图标(我们没有您的 CSS)
  • 我使两个 div id 都是唯一的
  • 我更正了您的displayReaction函数,以便将您要显示的反应的 ID 作为参数。

我不确定它是否能满足您的要求,但它应该可以帮助您解决问题。

$(document).on("click",".likeTypeAction",function()
{

var reaction_id = $('.likeTypeAction');
var reactionType=$(this).attr("data-reaction");
var reactionName=$(this).attr("original-title");
var rel=$(this).parent().parent().attr("rel");
var x=$(this).parent().parent().attr("id");

var sid=x.split("reaction");
var id_post =sid[1];
var htmlData='<i class="'+reactionName.toLowerCase()+'IconSmall likeTypeSmall" ></i>'+reactionName;
var dataString = 'id_post='+ id_post +'&rid='+reactionType;

displayReaction(id_post);     
/*
$.ajax({
url: 'ajaxReaction',
type: "post",
data: {"done":1, "id_post":id_post, "rid":reactionType}, 
beforeSend: function(){alert(id_post);},
success: function(data){
                   
      },

});*/
});

function displayReaction(id_post){
    a = $("#reactionEmoji" + id_post);
    var cls = $(this.a).parent().attr('class');
    
    var n = cls.split("reaction");
    
    var reactionNew = n[1];

    $.ajax({
     url: 'ajaxReaction',
     type: "post",
     data: {
         "getReaction":1,"reactionNew":reactionNew
     },
     beforeSend: function(){
         alert(reactionNew);
     },
     success: function(data){

     }
    })
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="reaction" class="reaction1"> 
	<div id="reactionEmoji1">nothing</div>
	<div class="reaction-action">
		<div rel="unlike" c="undefined" id="reaction1" class="likeDiv">
			<div class="tooltipster-content">
				<span class="likeTypeAction" original-title="Like" data-reaction="1">
					<i class="likeIcon likeType">like</i>
				</span>
				<span class="likeTypeAction" original-title="Amei" data-reaction="2">
					<i class="ameiIcon likeType">Amei</i>
				</span>
				<span class="likeTypeAction" original-title="Haha" data-reaction="3">
					<i class="hahaIcon likeType">Haha</i>
				</span>
				<span class="likeTypeAction" original-title="Uau" data-reaction="4">
					<i class="uauIcon likeType">Uau</i>
				</span>
				<span class="likeTypeAction" original-title="Triste" data-reaction="5">
					<i class="tristeIcon likeType">Triste</i>
				</span>
				<span class="likeTypeAction last" original-title="Grr" data-reaction="6">
					<i class="grrIcon likeType">Grr</i>
				</span>
			</div>
			<div class="tooltipster-arrow-top tooltipster-arrow" style="">
				<span class="tooltipster-arrow-border" style="margin-bottom: -1px; border-color: rgb(222, 222, 222);;"/>
				<span style="border-color:rgb(255, 255, 255);"/>
			</div>
		</div>
	</div>  
</div>


<div id="reaction" class="reaction2"> 
	<div id="reactionEmoji2">nothing</div>
	<div class="reaction-action">
		<div rel="unlike" c="undefined" id="reaction2" class="likeDiv">
			<div class="tooltipster-content">
				<span class="likeTypeAction" original-title="Like" data-reaction="1">
					<i class="likeIcon likeType">like</i>
				</span>
				<span class="likeTypeAction" original-title="Amei" data-reaction="2">
					<i class="ameiIcon likeType">Amei</i>
				</span>
				<span class="likeTypeAction" original-title="Haha" data-reaction="3">
					<i class="hahaIcon likeType">Haha</i>
				</span>
				<span class="likeTypeAction" original-title="Uau" data-reaction="4">
					<i class="uauIcon likeType">Uau</i>
				</span>
				<span class="likeTypeAction" original-title="Triste" data-reaction="5">
					<i class="tristeIcon likeType">Triste</i>
				</span>
				<span class="likeTypeAction last" original-title="Grr" data-reaction="6">
					<i class="grrIcon likeType">Grr</i>
				</span>
			</div>
			<div class="tooltipster-arrow-top tooltipster-arrow" style="">
				<span class="tooltipster-arrow-border" style="margin-bottom: -1px; border-color: rgb(222, 222, 222);;"/>
				<span style="border-color:rgb(255, 255, 255);"/>
			</div>
		</div>
	</div>  
</div>

<div id="reaction" class="reaction3"> 
	<div id="reactionEmoji3">nothing</div>
	<div class="reaction-action">
		<div rel="unlike" c="undefined" id="reaction3" class="likeDiv">
			<div class="tooltipster-content">
				<span class="likeTypeAction" original-title="Like" data-reaction="1">
					<i class="likeIcon likeType">like</i>
				</span>
				<span class="likeTypeAction" original-title="Amei" data-reaction="2">
					<i class="ameiIcon likeType">Amei</i>
				</span>
				<span class="likeTypeAction" original-title="Haha" data-reaction="3">
					<i class="hahaIcon likeType">Haha</i>
				</span>
				<span class="likeTypeAction" original-title="Uau" data-reaction="4">
					<i class="uauIcon likeType">Uau</i>
				</span>
				<span class="likeTypeAction" original-title="Triste" data-reaction="5">
					<i class="tristeIcon likeType">Triste</i>
				</span>
				<span class="likeTypeAction last" original-title="Grr" data-reaction="6">
					<i class="grrIcon likeType">Grr</i>
				</span>
			</div>
			<div class="tooltipster-arrow-top tooltipster-arrow" style="">
				<span class="tooltipster-arrow-border" style="margin-bottom: -1px; border-color: rgb(222, 222, 222);;"/>
				<span style="border-color:rgb(255, 255, 255);"/>
			</div>
		</div>
	</div>  
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

div 的 JavaScript 随机边距仅适用于第一个 div

来自分类Dev

创建一个通用的javascript或jquery,以在单击div或标签时使div或标签集集中在其内部的第一个输入上

来自分类Dev

获取所单击的li中的第一个div的ID

来自分类Dev

Javascript 显示/隐藏,在页面加载时显示第一个 div

来自分类Dev

如何选择.woocommerce-billing-fields类中具有香草javascript的div中的第一个h3(不包含类或id)?

来自分类Dev

如何选择.woocommerce-billing-fields类中具有香草javascript的div中的第一个h3(不包含类或id)?

来自分类Dev

Javascript-仅加载第一个函数

来自分类Dev

如何单击第一个按钮,该按钮位于具有span类的特定div中?(使用javascript)

来自分类Dev

使用 JavaScript 在 div 中填充文本,但动画仅适用于第一个文本

来自分类Dev

单击具有不同ID的javascript时选择div

来自分类Dev

ID + DOMCrawler Symfony2的第一个div

来自分类Dev

javascript:它会一直复制它重复的第一个div

来自分类Dev

Javascript滚动到div ID

来自分类Dev

javascript onclick获取div ID?

来自分类Dev

javascript onclick获取div ID?

来自分类Dev

Javascript在同一个div ID中淡入两个框

来自分类Dev

Javascript在同一个div ID中淡入两个框

来自分类Dev

从<div id =“ container”将参数传递给javascript函数

来自分类Dev

如何在JavaScript代码中为每个div分配一个唯一的ID?

来自分类Dev

在 Javascript 中获取 Div contenteditable 中的第一个链接

来自分类Dev

获取第二个JavaScript的父div ID?

来自分类Dev

获取第二个javascript的父div ID?

来自分类Dev

Javascript:一个函数,多个div

来自分类Dev

使用Javascript为div标签生成唯一的ID(html)

来自分类Dev

javascript代码仅在第一个ID中起作用

来自分类Dev

Javascript-为什么只在第一个div而不在第二个div上发生?

来自分类Dev

多个.on('click'......函数仅绑定到第一个<div>

来自分类Dev

选择嵌套div中的第一个孩子

来自分类Dev

Mysql ASC函数仅订购第一个ID

Related 相关文章

  1. 1

    div 的 JavaScript 随机边距仅适用于第一个 div

  2. 2

    创建一个通用的javascript或jquery,以在单击div或标签时使div或标签集集中在其内部的第一个输入上

  3. 3

    获取所单击的li中的第一个div的ID

  4. 4

    Javascript 显示/隐藏,在页面加载时显示第一个 div

  5. 5

    如何选择.woocommerce-billing-fields类中具有香草javascript的div中的第一个h3(不包含类或id)?

  6. 6

    如何选择.woocommerce-billing-fields类中具有香草javascript的div中的第一个h3(不包含类或id)?

  7. 7

    Javascript-仅加载第一个函数

  8. 8

    如何单击第一个按钮,该按钮位于具有span类的特定div中?(使用javascript)

  9. 9

    使用 JavaScript 在 div 中填充文本,但动画仅适用于第一个文本

  10. 10

    单击具有不同ID的javascript时选择div

  11. 11

    ID + DOMCrawler Symfony2的第一个div

  12. 12

    javascript:它会一直复制它重复的第一个div

  13. 13

    Javascript滚动到div ID

  14. 14

    javascript onclick获取div ID?

  15. 15

    javascript onclick获取div ID?

  16. 16

    Javascript在同一个div ID中淡入两个框

  17. 17

    Javascript在同一个div ID中淡入两个框

  18. 18

    从<div id =“ container”将参数传递给javascript函数

  19. 19

    如何在JavaScript代码中为每个div分配一个唯一的ID?

  20. 20

    在 Javascript 中获取 Div contenteditable 中的第一个链接

  21. 21

    获取第二个JavaScript的父div ID?

  22. 22

    获取第二个javascript的父div ID?

  23. 23

    Javascript:一个函数,多个div

  24. 24

    使用Javascript为div标签生成唯一的ID(html)

  25. 25

    javascript代码仅在第一个ID中起作用

  26. 26

    Javascript-为什么只在第一个div而不在第二个div上发生?

  27. 27

    多个.on('click'......函数仅绑定到第一个<div>

  28. 28

    选择嵌套div中的第一个孩子

  29. 29

    Mysql ASC函数仅订购第一个ID

热门标签

归档