4

如何创建可以触发 JavaScript 函数的可点击网格单元?

我提供了这个作为列模板的模板:

'<a href="\\#" class="group-details-popup">#=groupRefId#</a>' 

然后添加一个这样的函数来搜索该类并添加一个点击监听器:

$(".group-details-popup", grid.tbody).on("click", function (e) {
         // do something
});

但是当我单击单元格时,我的函数永远不会被调用;单元格中的值确实显示为链接,但没有触发任何事件。

4

3 回答 3

0

这样做:

$(".group-details-popup", grid.tbody).on("click", function (e) {
         // do something
});

这相当于:

$(grid.tbody).find(".group-details-popup").on("click", function (e) {
         // do something
});

将 click 事件处理程序附加到 grip.tbody jQuery 元素引用中的现有类“group-details-popup”。

为了附加到一个尚不存在的元素,您需要将事件处理程序附加到该元素的某个包装器 - 一旦添加该元素就会保存该元素。一个选项是“文档”,但是如果您可以获得更精确的内容,那么文档不是所需的容器,这样事件处理程序就不必处理整个 DOM 来查找目标。你似乎有一个元素包装器,所以使用它。

$(grid.tbody).on("click", ".group-details-popup", function (e) {
         // do something
});
于 2013-05-06T12:44:57.300 回答
0

尝试这个..

$("a.group-details-popup").click(function () {
    //your code here
}
于 2013-05-06T12:35:19.597 回答
0

我的猜测是,当您尝试访问时遇到错误,grid.tbody因为它是未定义的。您需要将其用引号括起来:

$(".group-details-popup", ".grid tbody").on("click", function (e) {
         // do something
});

我在上面假设这grid是一个类,并且您希望将处理程序绑定到tbody该类中的元素。否则,您的 jQuery 很好(假设您已正确包含它):

http://jsfiddle.net/GwYcf/

于 2013-05-03T21:36:45.057 回答