如何获取动态添加的li标签内隐藏input的value值?
解决动态添加li的点击事件无法获取隐藏input值的问题
问题根源在于:你直接给li绑定点击事件的方式,只能作用于绑定事件时已经存在于DOM中的静态元素。动态通过append添加的li是后续生成的,绑定事件的时候它们还不存在,自然不会触发点击逻辑。
解决办法是用jQuery的事件委托机制——把点击事件绑定到已经存在的父元素(比如你的ul#result)上,由父元素监听子元素的点击事件,这样不管子元素是静态还是动态添加的,都能触发回调。
正确代码示例
// 事件委托写法:绑定到父元素ul#result,监听li的点击 $('#result').on('click', 'li', function() { // 找到当前li里的隐藏input并获取value var hiddenId = $(this).find('input:hidden').val(); // 这里写你拿到id后的逻辑,比如打印或发起请求 console.log('获取到的ID值:', hiddenId); });
补充说明
- 事件委托依赖事件冒泡,所以必须确保父元素
#result在页面加载完成时就已经存在于DOM中,不能是动态添加的。 input:hidden是jQuery专门用来匹配隐藏输入框的选择器,和input[type="hidden"]效果一致,写法更简洁。- 附上动态添加li的示例(供参考):
// 动态生成带隐藏input的li function addSearchResultItem(itemId) { var liContent = `<li>搜索结果项 <input type="hidden" value="${itemId}"></li>`; $('#result').append(liContent); } // 调用示例:添加一个ID为456的结果项 addSearchResultItem(456);
内容的提问来源于stack exchange,提问作者Bora Özağlar
相关产品推荐
相关产品推荐

