javascript - 在点击 td 时,点击文本框

标签 javascript jquery html css

<分区>

Possible Duplicate:
jQuery - on() function when a div is clicked, but not when a child of that div is clicked

$(oTrPlanning).prev().children('td').each(function () {
    this.onclick = setCountClick;
});

点击 TD setCountClick() 被调用,但 TD 还包含一个 Textbox:

<td> 
    <input class="Input-InlineFilter" id="TextFirst"  type="text" value="">
</td>

因此,当我开始在 Textbox 上键入内容时,将再次调用 setCountClick()。 我想在点击 TD 时调用 setCountClick(),而不是 Textbox

最佳答案

点击事件将 DOM 从 textbox 冒泡到 td,一直到 body。如果您不希望 textbox 点击触发 td 点击处理程序,您需要停止冒泡:

$('#TextFirst').click(function (e) {
    e.stopPropogation();
});

Documentation for stopPropagation

要扩展,您应该利用此冒泡为所有 td 仅绑定(bind) 一个 事件处理程序:

// bind one handler to all tds
$(oTrPlanning).prev().on('click', 'td', function (e) {
    // ensure the clicked element is a TD
    if (this.nodeName === 'TD') {
        setCountClick(e);
    }
});

Documentation for nodeName

请注意,如果您在 setCountClick 中的任何位置依赖 this 运算符,它可能不再按预期工作。要解决此问题,您需要在调用 setCountClick 时考虑使用 $.proxybind:

setCountClick.bind(this)(e);

bind 返回一个新函数,该函数使用您传递的参数作为新函数内的 this 参数。然后执行该函数并将常规参数传递给它。

Documentation for bind

关于javascript - 在点击 td 时,点击文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238363/

上一篇:html - iCSS float div

下一篇:css - 如何编码 .css 文件?

相关文章:

Javascript 动画打开/关闭菜单

javascript - onScroll 事件未触发 else{} 函数

html - 如何添加覆盖主导航标题的粘性标题?

javascript - 在 nodejs 中解析 Watson TTS HTTP 响应

jquery - 需要添加选择列表的总计,如果去掉则减去

javascript - 如何使用 TDD 在 Javascript 中编写闰年算法?

java - 使用 Java 在启用 JavaScript 的网页上自动执行 Web 任务

javascript - JqG​​rid 格式化程序按钮(操作)不可见

javascript - 重新创建控制台 en js

javascript - 使 Javascript-search-function 快速