You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中$(this).attr('id')返回空值,Framework7传参异常

问题解决指南

咱们一步步拆解你遇到的问题,逐个修复:

1. 核心问题:PHP未输出ID值

你写的HTML链接里,PHP部分只是引用了$res['id']变量,但没有输出它,这直接导致id属性是空字符串!修改成下面这样,确保PHP把变量值渲染到HTML里:

<a href="#" id="<?php echo $res['id'];?>" class='bid_accept'>Accept</a>

(如果你的PHP环境支持短标签,也可以用更简洁的<?= $res['id'];?>,效果完全一样)

2. 选择器混用导致获取失败

Framework7内置的DOM操作库是Dom7,用$$作为别名,而你代码里用了$(this)——如果没引入jQuery,这个$根本不存在;就算引入了,也很可能和Dom7的作用域冲突。统一用Framework7的$$来获取元素属性:

$$('.bid_accept').on('click', function (e) {
  e.preventDefault();
  // 把$(this)替换成$$(this)
  var value = $$(this).attr('id');
  var jsonstring = JSON.stringify(value);
  myApp.confirm('Are you sure?', 'Custom Title', function () {
    // 注意:confirm的回调不需要传jsonstring参数,直接用外部的value就行
    myApp.alert('Your ID is "' + value + '". You clicked Ok button');
  }, function () {
    myApp.alert('You clicked Cancel button');
  });
});

我顺便帮你修正了confirm回调里的参数问题——原来的jsonstring参数是多余的,因为回调函数本身不需要接收这个变量,直接用外部定义的value就可以。

额外的动态内容检查

如果你的这个链接是动态加载的(比如通过Framework7的路由异步加载的页面内容),直接绑定click事件可能会失效,因为元素还没渲染到页面上。这时候需要用事件委托的方式绑定:

$$(document).on('click', '.bid_accept', function (e) {
  e.preventDefault();
  var value = $$(this).attr('id');
  // 后续的确认弹窗代码和上面一致
});

最后别忘了验证$res['id']本身是否有有效值——可以在PHP里临时加一句var_dump($res['id']);看看输出,确保这个变量不是空的。

内容的提问来源于stack exchange,提问作者Pamela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:36:21