bot.gif
取消
选择语言
确认
简体中文
繁体中文
English
close
正在加载
全部 数字货币专题 区块链专题 钱包专题 空投专题
空投专题
加密货币空投趋势分析:2024年五大空投项目的机遇与挑战​
摘要
2024年,加密货币空投成为开发者吸引用户的利器,其成功与否取决于代币分配策略及市场环境。 例如,Jupiter向早期用户空投了10亿JUP,推动了Solana生态的繁荣。 Starknet向130万个地址分发数亿美元,但STRK代币全年价格下跌75%,暴露出L2项目投资机会的饱和和缺乏杀手级应用的问题。 这些案例展现了代币分配策略对项目成败的关键作用,也反映了加密市场瞬息万变的特点。
@yiboyun6
更新时间: 2025-04-11 16:46
关注
</div> <!-- 打分 --> <!-- <div class="special_scoring"> <p>告诉我们您有多喜欢这篇文章!</p> <div class="scoring_img_box f-c-c"> <img src="/web-v2/img/special/difference.png" alt=""> <img src="/web-v2/img/special/commonly.png" alt=""> <img src="/web-v2/img/special/good.png" alt=""> <img src="/web-v2/img/special/better.png" alt=""> <img src="/web-v2/img/special/nice.png" alt=""> </div> <div class="scoring_vote_num">投票数:147</div> </div> --> <!-- 点赞收藏 --> <div class="special_option f-sb-c"> <div class="option_item f-c-c option_collect" onclick="collectArt()"> <img src="/web-v2/img/special/start.png" alt=""/> <div class="option_txt">收藏</div> <div class="collect_num num">0</div> </div> <div class="option_item f-c-c option_like" onclick="likeArt()"> <img src="/web-v2/img/special/like.png" alt=""/> <div class="option_txt">点赞</div> <div class="like_num num">0</div> </div> </div> <!-- 最新文章 --> <div class="latest_articles"> <div class="latest_articles_title">最新文章</div> <div class="latest_art_box"> <div class="swiper-container latest_art_container"> <div class="swiper-wrapper"> <a href="/news/120401646.html" class="latest_art_item swiper-slide" > <img src="http://img.shlwsj.asia/pro/2026-08-14/img/17867016213811ba9a89bcab8j618b73x3axb43j968xx.jpg" class="latest_art_img"/> <div class="latest_art_title"> web3: 硬件钱包用户信息泄露后该先处理什么 </div> </a> <a href="/news/118401645.html" class="latest_art_item swiper-slide" > <img src="http://img.shlwsj.asia/pro/2026-08-14/img/17867009385181bx5j8631214a204ja09jb965h15h119.jpg" class="latest_art_img"/> <div class="latest_art_title"> nft: 外媒:Schwartz就比特币区块空间之争发声 </div> </a> <a href="/news/120401644.html" class="latest_art_item swiper-slide" > <img src="http://img.shlwsj.asia/pro/2026-08-14/img/178669920301408hcacb1hja6jx6hah2398b910h23801.jpg" class="latest_art_img"/> <div class="latest_art_title"> web3: 韩国议员反对明年开征22%加密税 </div> </a> </div> </div> <div class="swiper-pagination"></div> </div> </div> <!-- 上一篇下一篇 --> <div class="special_button_box f-sb-c"> <a class="special_button" href="/zhuanti/13410427.html" > <div class="special_button_txt"> 了解 <span> 空投 </span> 的知识 </div> <div class="special_button_title"> 深度解析:FDV和代币经济学如何影响空投代币价格 </div> <div class="button_box">上一篇</div> </a> <a class="special_button" href="/zhuanti/13410444.html" > <div class="special_button_txt"> 了解 <span> 空投 </span> 的知识 </div> <div class="special_button_title"> 空投数据全解析:DeFi、L2、NFT项目空投金额占比曝光​ </div> <div class="button_box">下一篇</div> </a> </div> <!-- 评论 --> <!-- 更多文章 --> <div class="more_special"> <div class="more_special_title">阅读更多专题</div> <!-- 展示的四篇文章 --> <div class="more_special_box"> <a class="more_special_item extend_special" href="/zhuanti/13413557.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-08-12/56adf735886252c11b9fc3882d53cac5.jpeg" alt="tut是什么币?2026 Tutorial(TUT)项目定位与盘面数据深度审计" class="special_cover" /> <!-- 标题 --> <div class="special_title"> tut是什么币?2026 Tutorial(TUT)项目定位与盘面数据深度审计 </div> <!-- 文章 --> <div class="special_content"> Tut 对应的加密货币全称为 Tutorial,代币代码为 TUT。根据盘面分类,TUT 属于 Meme(模因)概念板块的加密资产。二级市场最新价格报 0.07635 美元,总市值达到 6,267 万美元,24 小时合约成交量冲高至 5.89 亿美元。尽管单日出现 -23.95% 的大幅洗盘,但其 30 天期拉升幅度仍高达 +523.16%,历史总累计涨幅达 +29.86K%。本文将结合盘面微观数据、衍生品未平仓量及多空持仓比,为您做一次全面的 tut是什么币 介绍与风险审计。 对于需要获取全球加密资产合规数据终端与衍生品热力的华语投资者,建议通过 币界网 调取纯净的数据源,彻底过滤网络黑产的伪造看盘通道。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-08-12 17:36 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413518.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-08-04/d4eda6e6936d2e250eef90eed6b4fc72.png" alt="加密货币空投是什么?2026新手必读的完整参与攻略" class="special_cover" /> <!-- 标题 --> <div class="special_title"> 加密货币空投是什么?2026新手必读的完整参与攻略 </div> <!-- 文章 --> <div class="special_content"> 本文基于The Block、Nansen及CryptoRank.io等2026年最新数据,揭示加密货币空投从“广撒网”向“交易量门槛制+AI分配”的范式转变。文章指出超八成空投属骗局或零价值,并提供独立钱包、官方验证等四步安全策略。核心观点:空投不再是投机套利工具,而是成为早期真实用户获取长期生态红利的关键入口。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-08-04 15:08 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413477.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-07-23/1e5f8e189021d3d940318a9b30aecd3f.png" alt="什么是加密货币空投?2026下半年有哪些值得关注的空投项目" class="special_cover" /> <!-- 标题 --> <div class="special_title"> 什么是加密货币空投?2026下半年有哪些值得关注的空投项目 </div> <!-- 文章 --> <div class="special_content"> 2026下半年加密货币空投市场正从“流量撒钱”转向“价值激励”。Base、MetaMask、Polymarket、Arcus、Hyperliquid生态(Kinetiq)及RWA赛道(apyx/OnRe)为六大高确定性标的。数据显示78%-94%空投代币遭短期抛售,唯有真实使用与收入挂钩的空投项目具备长期价值。核心策略:精选3-5个项目深度参与链上交互,摒弃广撒网式刷量。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-07-23 18:44 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413428.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-07-15/8e6535cbd10d78203e135c70fd7ec0d2.jpeg" alt="狗狗币涨了多少倍?2026 顶级交易所大户多空比与空头爆仓数据深度透视" class="special_cover" /> <!-- 标题 --> <div class="special_title"> 狗狗币涨了多少倍?2026 顶级交易所大户多空比与空头爆仓数据深度透视 </div> <!-- 文章 --> <div class="special_content"> 截至 2026 年7月15日,初代 MEME 币鼻祖狗狗币(Dogecoin)二级市场价格报 0.0743 美元,24 小时涨幅为 +2.99%。 伴随着近期大盘在震荡中回暖,狗狗币涨了多少倍再度成为全球跨界投资者衡量投机周期与资金情绪的风向标。作为币圈极具传奇色彩的资产,狗狗币从诞生之初的极低尘埃到巅峰时期的万众狂欢,其历史最大倍率与当前的筹码结构究竟如何?本文将通过链上衍生品、历史底层价格以及多空持仓比等核心盘口数据,为您深度审计狗狗币的真实价值版图,并在文章首尾提供干净、无污染的核验红线。建议在核验全球主流数字货币平台的真实链上数据时,首选权威的信息源,如 币界网 的安全导航,可以有效规避搜索引擎前排被恶意篡改的假冒看盘通道。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-07-15 17:42 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413366.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-07-08/b19a52bf74e82d783411f36077c367c7.jpg" alt="vanry币前景:2026年AI原生公链生态与币安监管标签下的多空异动行情分析" class="special_cover" /> <!-- 标题 --> <div class="special_title"> vanry币前景:2026年AI原生公链生态与币安监管标签下的多空异动行情分析 </div> <!-- 文章 --> <div class="special_content"> 在全球区块链技术加速向AI原生基础设施演进的2026年,作为曾经由Terra Virtua Kolect(TVK)转型而来的AI原生公链,Vanar Chain(VANRY)正处于生态建设与监管合规的十字路口。随着该项目将核心业务聚焦于Web3游戏、AI数据集成、支付金融(PayFi)及现实世界资产(RWA)代币化,其在市场中的表现愈发受到高净值两栖投资者的关注。然而,当前VANRY的行情极度分化:一方面是基于Neutron与Kayon等AI工具的真实链上活跃度提升预期,另一方面则是币安于2026年7月3日施加的监控标签带来的极高流动性折价风险。对于关注vanry币前景的投资者而言,当前盘面正上演着一场由空头强平与监管避险交织的博弈大戏,盲目入场极易沦为算法清算的牺牲品。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-07-08 15:03 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413282.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-06-29/4b442f089c467bfc1cfdc8de2dff2dae.png" alt="2026币圈五大主流交易所手续费一览表,谁家手续费最低?" class="special_cover" /> <!-- 标题 --> <div class="special_title"> 2026币圈五大主流交易所手续费一览表,谁家手续费最低? </div> <!-- 文章 --> <div class="special_content"> 本文对比了2026年币安、OKX、Bitget、Gate.io、HTX五大交易所的手续费。核心发现:现货费率Bitget最低(0.01%);合约挂单费率OKX与币安最优(0.02%) 。文章揭示,选择交易所不能只看数字,需结合流动性、平台币抵扣、交易场景综合判断,帮你找到最适合自己的低成本交易平台。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-06-29 17:17 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413225.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-06-18/b48de172a9970babea25441066d29b46.jpg" alt="Anthropic的上市前景怎么样?万亿美金级秘密S-1文件与华尔街超级抢跑指南" class="special_cover" /> <!-- 标题 --> <div class="special_title"> Anthropic的上市前景怎么样?万亿美金级秘密S-1文件与华尔街超级抢跑指南 </div> <!-- 文章 --> <div class="special_content"> 2026年6月,全球人工智能衍生品与资本市场迎来史史级大地震。各大财经论坛与科技媒体正在高频检索一个终极痛点:Anthropic的上市前景怎么样?作为 Claude 系列大模型的母公司,Anthropic 已于 2026 年 6 月 1 日正式向美国证券交易委员会(SEC)秘密提交了 IPO 上市申请(Confidential S-1),直接在万亿美金公募赛道上完成了对死敌 OpenAI 的历史性抢跑。本文将用最冷血的真金白银数据、两轮狂暴的一级市场换手以及华尔街顶级投行的博弈内幕,为您深度拆解 Anthropic的上市前景怎么样。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-06-18 16:20 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> <a class="more_special_item extend_special" href="/zhuanti/13413218.html" > <!-- 封面 --> <img src="http://img.shlwsj.asia/uploadfile/2026-06-17/f3bb10c4aa9417704b331741db68f01c.jpg" alt="zec还可以做多吗?大波幅震荡背后散户0.41倍极度踏空与大户锁仓全指南" class="special_cover" /> <!-- 标题 --> <div class="special_title"> zec还可以做多吗?大波幅震荡背后散户0.41倍极度踏空与大户锁仓全指南 </div> <!-- 文章 --> <div class="special_content"> 2026 年 6 月 17 日,全球老牌隐私赛道的权重资产大零币 (Zcash, ZEC) 在历经多日的单边暴涨后,日内由于触及上方阶段性阻力密集区,盘面呈现出典型的高位剧烈宽幅震荡与局部多头去杠杆清洗。你这张最新的 Coinglass 数据看板释放了极其强烈的筹码异动信号:ZEC 现报价为 507.79 美元,24 小时内录得 -2.42% 的小幅回撤。然而将其拉长到 7 天周期,涨幅依然强悍地维持在 +18.10%,90 天更是疯狂飙升 +104.18%。伴随着高位多空互绞,全网 24 小时合约爆仓总额冲高至 7.18M 美元,其中多头被抹去 4.64M 美元,而空头爆仓达 2.54M 美元。面对这轮突如其来的大幅高位拉锯,全网短线客都在高频追问一个核心痛点:zec还可以做多吗?想要获取更多一线硬核链上资产博弈、巨鲸持仓异动与行业深度研报解析,可直接锁定全球顶尖的区块链行业快讯平台 528btc。本文将以中立客观的量化视角,为您深度拆解当前的盘面真相。 </div> <!-- 作者 --> <div class="special_bottom f-sb-c"> <div class="special_list_author"> 2026-06-17 18:32 </div> <div class="special_list_tab"> 空投专题 </div> </div> </a> </div> <div class="more_recommendations"> 还有 34532篇更精彩 </div> <div class="more_recommendations_btn">继续阅读更多专题</div> </div> </div> </body> <script> document.addEventListener("DOMContentLoaded", () => { const aiBtn = document.querySelector(".ai_btn"); // 速看按钮 const aiContent = document.querySelector(".ai_content"); // 包含内容的容器 const titleRight = document.querySelector(".ai_title_right"); // 收起按钮 const aiDetails = document.querySelector("#ai-details"); // 动态插入内容的容器 const abstractDetailsAi = document.querySelector(".Abstract_details_ai"); // 顶部速看容器 const smallText = `[!--ai_intro--]`; console.log(smallText, "smallText"); const tempElement = document.createElement("div"); // 清理和提取 smallText 中的纯文本 tempElement.innerHTML = smallText; const cleanText = tempElement.textContent.trim(); // 去掉首尾空格 let animationCompleted = false; // 标记动画是否完成 if (!smallText || smallText.trim() === "") { if (abstractDetailsAi) { abstractDetailsAi.style.display = "none"; // 隐藏 .Abstract_details_ai } } else { if (abstractDetailsAi) { abstractDetailsAi.style.display = "flex"; // 隐藏 .Abstract_details_ai } } if ( !aiBtn || !aiContent || !titleRight || !aiDetails || !abstractDetailsAi ) { return; } // 逐字动画函数 function typeWriterEffect(content, element, callback) { element.innerHTML = ""; // 清空内容 let index = 0; const interval = setInterval(() => { if (index < content.length) { element.innerHTML += content[index++]; // 逐字插入到元素中 } else { clearInterval(interval); // 停止动画 animationCompleted = true; // 标记动画完成 titleRight.style.pointerEvents = "auto"; // 启用收起按钮 if (callback) callback(); // 动画完成后的回调 } }, 50); // 每50ms显示一个字符 } // 点击“速看”按钮 aiBtn.addEventListener("click", () => { abstractDetailsAi.style.display = "none"; // 隐藏顶部速看容器 aiContent.style.display = "block"; // 显示 ai_content if (!animationCompleted) { titleRight.style.pointerEvents = "none"; // 禁用收起按钮 typeWriterEffect(cleanText, aiDetails, () => { // console.log("动画完成"); }); } else { aiDetails.innerHTML = cleanText; // 直接显示完整内容 } }); // 点击“收起”按钮 titleRight.addEventListener("click", () => { if (animationCompleted) { aiContent.style.display = "none"; // 隐藏内容 abstractDetailsAi.style.display = "flex"; // 恢复顶部速看容器 } }); }); </script> <!-- 公共 --> <script> let commentLoginStatus = false; let commentList = $('#commentList'); function isLogin() { let url = '/e/extend/api/index.php?m=v2&c=app' $.ajax({ url: url, data: { action: "getUserInfo", data: {}, }, type: 'POST', success: function (res) { let resData = JSON.parse(res) commentLoginStatus = resData.data != ""; if (commentLoginStatus) { $('.login_status_box').show(); $('.nologin_status_box').hide(); $('#userAdv').attr('src', resData.data.header); getFollowStatus(); } else { $('.login_status_box').hide(); $('.nologin_status_box').show(); } }, error: function (e) { console.log('resdata e', e); } }) } $(document).ready(function () { isLogin(); var myArtSwiper = new Swiper('.latest_art_container', { slidesPerView: 1, centeredSlides: true, // active slide 居中 // 设置指示器 pagination: { el: '.swiper-pagination', clickable: true, // 允许点击小点进行切换 }, }); }) let categoryId = 134; if (categoryId == '131') { $(".special_tab_box").scrollLeft(400); } if (categoryId == '134') { $(".special_tab_box").scrollLeft(500); } </script> <!-- 关注作者 --> <script> let followStatus = false; function getFollowStatus() { let id = 114; $.ajax({ url: "/e/extend/api/index.php?m=user&c=followStatus", type: 'post', data: JSON.stringify({ ids: [id], }), success: function (res) { if (res.code === 200) { followStatus = res.data[id].status; if (followStatus) { $('.special_follow_btn').hide(); $('.special_unfollow_btn').show(); } else { $('.special_follow_btn').show(); $('.special_unfollow_btn').hide(); } } }, error: function (err) { console.error("请求失败:", err); }, }); } function followAuthor() { let id = 114; $.ajax({ url: "/e/extend/api/index.php?m=user&c=follow", type: 'post', data: JSON.stringify({ id: id, status: !followStatus, }), success: function (res) { if (res.code === 200) { followStatus = !followStatus if (followStatus) { $('.special_follow_btn').hide(); $('.special_unfollow_btn').show(); } else { $('.special_follow_btn').show(); $('.special_unfollow_btn').hide(); } layer.msg('操作成功', {icon: 1}) } }, error: function (err) { console.error("请求失败:", err); }, }); } </script> <!-- 文章详情相关 --> <script> // 点赞收藏状态数量 let specialLikeSatus = false; let specialCollected = false; let collectNum = 0; let likeNum = 0; requestOptions(); function requestOptions() { let id = "10443"; $.ajax({ url: "/e/extend/api/index.php?m=news&c=listData", type: "post", data: JSON.stringify({ ids: [id], type: 4, }), success: function (res) { if (res.code === 200) { listData = res.data[id]; $(".special_option .collect_num").html(listData.collectCount); $(".special_option .like_num").html(listData.likeCount); specialLikeSatus = listData.isLiked; specialCollected = listData.isCollected; collectNum = listData.collectCount; likeNum = listData.likeCount; if (listData.isCollected) { $(".special_option .option_collect").addClass("active"); } else { $(".special_option .option_collect").removeClass("active"); } if (listData.isLiked) { $(".special_option .option_like").addClass("active"); } else { $(".special_option .option_like").removeClass("active"); } } }, error: function (err) { console.error("请求失败:", err); }, }); } // 收藏 function collectArt() { let id = "10443"; $.ajax({ url: "/e/extend/api/index.php?m=user&c=collect", type: "post", data: JSON.stringify({ id: id, status: !specialCollected, type: 4, }), success: function (res) { if (res.code == 200) { specialCollected = !specialCollected; let currentNum = specialCollected ? collectNum + 1 : collectNum - 1; collectNum = currentNum; $(".special_option .collect_num").html(currentNum); if (specialCollected) { $(".special_option .option_collect").addClass("active"); } else { $(".special_option .option_collect").removeClass("active"); } layer.msg("操作成功", {icon: 1}); } }, error: function (err) { console.error("请求失败:", err); }, }); } // 点赞 function likeArt() { let id = "10443"; $.ajax({ url: "/e/extend/api/index.php?m=user&c=like", type: "post", data: JSON.stringify({ id: id, status: !specialLikeSatus, type: 4, }), success: function (res) { if (res.code == 200) { specialLikeSatus = !specialLikeSatus; let currentNum = specialLikeSatus ? likeNum + 1 : likeNum - 1; likeNum = currentNum; $(".special_option .like_num").html(currentNum); if (specialLikeSatus) { $(".special_option .option_like").addClass("active"); } else { $(".special_option .option_like").removeClass("active"); } layer.msg("操作成功", {icon: 1}); } }, error: function (err) { console.error("请求失败:", err); }, }); } </script> <!-- 评论相关 --> <script> // 获取评论列表 let commentPage = 0; let pid; let commentTotal = 0; let allCommentConut = 0; let allCommentList = []; let pageSize = 5; getCommentList(); function getCommentList() { $(".comment_nomore_box").hide(); $(".comment_more_box").hide(); let id = "10443"; commentPage++; $.ajax({ url: `/e/extend/api/index.php?m=comment&c=list&id=${id}&pageSize=${pageSize}&page=${commentPage}&type=4&subpageSize=5`, type: "GET", success: function (res) { if (res.code === 200) { commentTotal = res.data.total; allCommentConut = res.data.count; $("#commentTotalNum").html(allCommentConut); $(".op_b_comment .op_bottom_num").html(allCommentConut); if (commentPage == 1) { //首次加载判断有没有评论 if (res.data.list.length > 0) { commentList.show(); $(".comment_nocomment_box").hide(); commentListShow(res.data.list); } else { commentList.hide(); $(".comment_nocomment_box").show(); } //首次加载判断有没有更多 if (res.data.total > 5) { $(".comment_more_box").css("display", "flex"); } else if (res.data.total > 0 && res.data.total < 5) { $(".comment_nomore_box").show(); } else { $(".comment_more_box").hide(); $(".comment_nomore_box").hide(); } } else { commentListShow(res.data.list); } } }, error: function (err) { console.error("请求失败:", err); }, }); } //处理评论列表逻辑 function commentListShow(list) { if (commentPage == 1) { commentList.empty(); } $.each(list, function (index, item) { allCommentList.push(item); let html = ` <div class="comment_list_item f-fs-fs" data-id="${item.id}" > <img src="${item.avatar}" class="comment_list_adv"> <div class="comment_item" id="CommentList_${item.id}"> <div class="comment_item_head f-fs-c"> <div class="comment_username f-fs-c"> <div class="username">${item.username}</div> <div class="comment_author" style="display:${ item.isAuthor ? "bolck" : "none" }">作者</div> </div> <div class="comment_item_time">${timeAgo( dayjs(item.created_at).valueOf() )}</div> </div> <div class="comment_item_content"> ${item.content} </div> <div class="comment_item_bottom f-sb-c"> <div class="comment_reply father_reply f-c-c">回复</div> <div class="comment_option_box f-fs-c"> <img src="/web-v2/img/special/${ item.isLiked ? "comment_like" : "like_comment" }.png" class="comment_like_icon fatherlike" data-status="${ item.isLiked }"> <div class="comment_likenum">${ item.likeCount }</div> </div> </div> <div class="reply_comment_box"> <textarea class="replay_textarea" placeholder="回复:" ></textarea> <div class="reply_btn_box f-fe-fs"> <div class="ready_btn">回复</div> </div> </div> <div class="comment_subitem_list" style="display:${ item.sub.total ? "bolck" : "none" }" id="subCommentList_${item.id}"> </div> </div> </div> `; commentList.append(html); if (item.sub.list && item.sub.list.length > 0) { let list = item.sub.list; $.each(list, function (subIdx, subItem) { let html = ` <div class="subitem_box f-fs-fs" data-id="${ subItem.id }"> <img src="${subItem.avatar}" class="subitem_adv"> <div class="comment_subitem"> <div class="comment_subitem_head f-fs-c"> <div class="subitem_username f-fs-c"> <div class="username">${ subItem.username }</div> <div class="subitem_author" style="display:${ subItem.isAuthor ? "block" : "none" }">作者</div> <div class="reply" style="display:${ subItem.commentTo ? "block" : "none" }">回复</div> <div class="username" style="display:${ subItem.commentTo ? "block" : "none" }">${subItem.commentTo}</div> </div> <div class="comment_subitem_time">${timeAgo( dayjs(subItem.created_at).valueOf() )}</div> </div> <div class="comment_subitem_content"> ${subItem.content} </div> <div class="comment_item_bottom f-sb-c"> <div class="comment_reply sub_replay f-c-c">回复</div> <div class="comment_option_box f-fs-c"> <img src="/web-v2/img/special/${ subItem.isLiked ? "comment_like" : "like_comment" }.png" class="comment_like_icon sublike" data-status="${ subItem.isLiked }"> <div class="comment_likenum">${ subItem.likeCount }</div> </div> </div> <div class="subreply_comment_box"> <textarea class="subreplay_textarea" placeholder="回复:" ></textarea> <div class="subreply_btn_box f-fe-fs"> <div class="subready_btn">回复</div> </div> </div> </div> </div> `; $(`#subCommentList_${item.id}`).append(html); }); } if (item.sub.total > 5) { let moreHtml = ` <div class="show_more_btn">展开更多评论</div>`; $(`#CommentList_${item.id}`).append(moreHtml); } }); if (commentPage > 1) { if (commentTotal == allCommentList.length) { $(".comment_more_box").hide(); $(".comment_nomore_box").show(); } else { $(".comment_more_box").css("display", "flex"); $(".comment_nomore_box").hide(); } } } //时间戳处理 function timeAgo(timestamp) { const now = new Date().getTime(); const then = new Date(timestamp).getTime(); const diff = now - then; const seconds = Math.floor(diff / 1000); const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); const days = Math.floor(hours / 24); if (seconds < 60) { return "刚刚"; } else if (minutes < 60) { return `${minutes}分钟前`; } else if (hours < 24) { return `${hours}小时前`; } else { const date = new Date(timestamp); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); return `${year}-${month}-${day}`; } } //展开更多回复 let pageListMap = new Map(); $(document).on("click", ".show_more_btn", function () { const parentComment = $(this).closest(".comment_list_item"); // 获取当前评论项 pid = parentComment.data("id"); // 获取评论的ID let _this = $(this); //存入每一个评论的子回复页数 let page; if (!pageListMap.get(pid)) { page = 1; pageListMap.set(pid, page); } else { page = pageListMap.get(pid); } let id = "10443"; page++; pageListMap.set(pid, page); $.ajax({ url: `/e/extend/api/index.php?m=comment&c=list&pid=${pid}&subpageSize=5&page=${page}&type=4`, type: "GET", success: function (res) { let list = res.data.list; let maxPage = Math.ceil(res.data.total / 5); $.each(list, function (subIdx, subItem) { let html = ` <div class="subitem_box f-fs-fs" data-id="${ subItem.id }"> <img src="${subItem.avatar}" class="subitem_adv"> <div class="comment_subitem"> <div class="comment_subitem_head f-fs-c"> <div class="subitem_username f-fs-c"> <div class="username">${ subItem.username }</div> <div class="subitem_author" style="display:${ subItem.isAuthor ? "block" : "none" }">作者</div> <div class="reply" style="display:${ subItem.commentTo ? "block" : "none" }">回复</div> <div class="username" style="display:${ subItem.commentTo ? "block" : "none" }">${subItem.commentTo}</div> </div> <div class="comment_subitem_time">${timeAgo( dayjs(subItem.created_at).valueOf() )}</div> </div> <div class="comment_subitem_content"> ${subItem.content} </div> <div class="comment_item_bottom f-sb-c"> <div class="comment_reply sub_replay f-c-c">回复</div> <div class="comment_option_box f-fs-c"> <img src="/web-v2/img/special/${ subItem.isLiked ? "comment_like" : "like_comment" }.png" class="comment_like_icon sublike" data-status="${ subItem.isLiked }"> <div class="comment_likenum">${ subItem.likeCount }</div> </div> </div> <div class="subreply_comment_box"> <textarea class="subreplay_textarea" placeholder="回复:" ></textarea> <div class="subreply_btn_box f-fe-fs"> <div class="subready_btn">回复</div> </div> </div> </div> </div> `; $(`#subCommentList_${pid}`).append(html); }); if (page >= maxPage) { _this.remove(); } }, error: function (err) { console.error("请求失败:", err); }, }); console.log(pid); }); //发表评论 function pushComment() { const commentText = $("#pushText").val(); if (!commentText) { layer.msg("请输入内容", {icon: 2}); return; } let id = "10443"; $.ajax({ url: "/e/extend/api/index.php?m=comment&c=add", type: "post", data: JSON.stringify({ id: id, type: 4, content: commentText, }), success: function (res) { if (res.code === 200) { commentPage = 0; allCommentList = []; commentList.empty(); $("#pushText").val(""); layer.msg("评论成功", {icon: 1}); getCommentList(); } }, error: function (err) { console.error("请求失败:", err); }, }); } //点击评论按钮 $(document).on("click", ".father_reply", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".comment_list_item"); // 获取当前评论项 parentComment.find(".reply_comment_box").show(); const replyUsername = parentComment .find(".comment_item_head .username") .text(); // 获取主评论的用户名 parentComment .find(".replay_textarea") .attr("placeholder", `回复 ${replyUsername}:`); pid = parentComment.data("id"); // 获取评论的ID }); function subPushComment(commentText, commentPid) { $.ajax({ url: "/e/extend/api/index.php?m=comment&c=add", type: "post", data: JSON.stringify({ pid: commentPid, type: 4, content: commentText, }), success: function (res) { if (res.code === 200) { pageSize = allCommentList.length < 5 ? 5 : allCommentList.length; allCommentList = []; commentPage = 0; layer.msg("评论成功", {icon: 1}); pageListMap.clear(); getCommentList(); } }, error: function (err) { console.error("请求失败:", err); }, }); } //回复一级评论 $(document).on("click", ".ready_btn", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".comment_list_item"); // 获取当前评论项 let commentPid = parentComment.data("id"); // 获取评论的ID const commentText = parentComment.find(".replay_textarea").val(); // 获取评论内容 console.log("commentText", commentText); if (!commentText) { layer.msg("请输入内容", {icon: 2}); return; } subPushComment(commentText, commentPid); }); //二级评论按钮 $(document).on("click", ".sub_replay", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".subitem_box"); // 获取当前评论项 parentComment.find(".subreply_comment_box").show(); const replyUsername = parentComment .find(".comment_subitem_head .username:first") .text(); // 获取主评论的用户名 parentComment .find(".subreplay_textarea") .attr("placeholder", `回复 ${replyUsername}:`); }); //回复二级评论 $(document).on("click", ".subready_btn", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".subitem_box"); // 获取当前评论项 let commentPid = parentComment.data("id"); // 获取评论的ID const commentText = parentComment.find(".subreplay_textarea").val(); // 获取评论内容 console.log("commentText", commentText); if (!commentText) { layer.msg("请输入内容", {icon: 2}); return; } subPushComment(commentText, commentPid); }); // 点赞 function likeCommentOption(id, status) { $.ajax({ url: "/e/extend/api/index.php?m=comment&c=like", type: "post", data: JSON.stringify({ id: id, status: !status, }), success: function (res) { if (res.code === 200) { allCommentList.length < 5 ? 5 : allCommentList.length; allCommentList = []; commentPage = 0; layer.msg("操作成功", {icon: 1}); pageListMap.clear(); getCommentList(); } }, error: function (err) { console.error("请求失败:", err); }, }); } //一级评论点赞 $(document).on("click", ".fatherlike", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".comment_list_item"); // 获取当前评论项 let commentPid = parentComment.data("id"); // 获取评论的ID let status = $(this).data("status"); likeCommentOption(commentPid, status); }); //二级评论点赞 $(document).on("click", ".sublike", function () { if (!commentLoginStatus) { handleLoginH5(); return; } const parentComment = $(this).closest(".subitem_box"); // 获取当前评论项 let commentPid = parentComment.data("id"); // 获取评论的ID let status = $(this).data("status"); likeCommentOption(commentPid, status); }); //获取更多评论 function moreCommentList() { // pageSize = 5; getCommentList(); } </script> <!-- 跳转更多专题 --> <script> let firstSumbit = true; $(".more_recommendations_btn").click(function () { if (firstSumbit) { firstSumbit = false; $(".more_special_item").removeClass("extend_special"); $(".more_recommendations_btn").html("返回专题首页"); $(".more_recommendations").html("百万币友都在看"); } else { window.location.href = "/zhuanti/"; } }); </script> </html>