我有一个 ASP .NET 页面,其中包含多个中继器内动态创建的用户控件(单个控件的所有实例)。这些用户控件中的每一个都包含一个文本框,我想使用其下方的 HTML 按钮将其清空。因为我不想引起任何回发,所以我尝试使用 jQuery 在所有客户端执行此操作。在主页上,我有以下内容:var removeCommentBtns = $('.remove-comment-btn');for (let i = 0; i < removeCommentBtns.length; i++) { if (removeCommentBtns.val() != null) { removeCommentBtns[i].addEventListener("click", function () { //blank out text box }) }};这会循环遍历我想要将文本框清除事件添加到的所有按钮,但我没有运气弄清楚我需要在事件侦听器中放入什么来清空文本框。我无法引用文本框,$('#<%=txtTextBox.ClientID %>')因为文本框位于我的用户控件中。我还尝试了各种 DOM 操作,例如找到文本框所在的前一个跨度并设置 textContent$(this).prevAll('.span-clause-comment')[0].textContent = "";但这会导致文本框本身也消失。我确定我缺少一些基本的东西!
2 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
我认为这可以解决您访问动态创建的元素的问题。 使用 jQuery 访问动态创建的项目?
但我更喜欢使用 vanilla javascript。所以我建议你使用事件委托,你需要访问页面加载时已经存在的最近的父元素,然后使用 event.target 访问任何动态创建的子元素。
万千封印
TA贡献1891条经验 获得超3个赞
我终于想通了。我能够通过找到最近的 div 然后使用通配符找到文本框来清空(或设置)文本框中的文本。
var txt = $(this).closest("div").find("[id*=txtTextBox]"); txt[0].textContent = "";
添加回答
举报
0/150
提交
取消