c# - 在 gridview asp.net mvc c# 的 jquery 中查找元素

标签 c# javascript jquery asp.net-mvc

我是 Web 开发的新手,所以我将 MVC 与 ASP.NET 结合使用,并且我在使用 jQuery 及其函数方面遇到了困难。如果有帮助,我将 Razor View Engine 与 ASP.NET MVC c# 和 devexpress 控件一起使用。

现在这是我的问题:

我有一个 View ,它有一个 @Html.Action('view','controller');声明哪些链接到 gridview。

在那个 gridview 上,我得到了一些客户端函数,当选择一行并在键盘上按下 Enter 时,它们会显示一个详细 View 。

现在,我使用的 gridview 有一些自动搜索选项,方法是单击文本字段并输入您要查找的内容,然后按回车键。 我声明了一个值,如果我正在搜索或选择一行并按 enter 键,它会保存一个值。

所以在那之后我开始工作,当我在搜索文本字段中按 enter 时,它不会打开详细信息 View 。但是它在搜索时执行回调。其中gridview是新创建的。现在我遇到了一个问题,即在 GridView 上进行此回调后,我的函数不再找到该元素。

我尝试在 jquery 中使用 .find 函数,但这没有帮助。以下是我尝试过的一些片段:

(这些位于 $(document).ready 函数中)

 $('#id').click(function () {
    // do something
 });

和 .find 版本:

 $('#gridview').find('#id').click(function () {
    // do  something
});

所以基本上我希望能够在再次构建 gridview 之后找到该元素。

::编辑:: 文本字段上的 ID。单击保持不变。

::编辑2:: 通过在 devexpress gridview 的 EndCallback clientsideevent 中添加我当前的代码,我找到了一个廉价而肮脏的解决方案。但必须有一个体面的方法来做到这一点...... 但这也证明了我之前的编辑,id 保持不变。

最佳答案

当您调用绑定(bind)事件处理程序的函数时,例如 .click() , 在包含一组元素的 jQuery 对象上,事件处理程序仅绑定(bind)到 那些 元素;它也不会应用于随后创建的与选择器匹配的任何元素。如果替换那些元素,即使新元素具有相同的 id ,事件处理程序随之消失。不过,有一个解决方案,称为事件委托(delegate)

基本原则是将事件处理程序绑定(bind)到一个不会被替换的元素,该元素将包含您想要触发事件的所有元素,并向其传递一个事件类型,用于匹配元素以触发该事件类型的函数的选择器,以及要执行的函数。在 jQuery 1.7 或更高版本中,这是使用 .on() 的变体之一实现的。功能:

$('#gridview').on('click', '#id', function(e) {
    // do something when the element with an id of 'id' is clicked on
});

请注意,我假设您的 #gridview元素永远不会被替换。如果是,请选择另一个您可以引用的包含 #gridview 的元素。元素。如果一切都失败了,你可以在 document 上调用它本身。

有关更多信息,请查看 .on() 的 jQuery 文档中的直接和委托(delegate)事件部分。 .

如果您仍在使用 1.7 之前的 jQuery 版本,则需要使用 .delegate() 代替功能。它以相同的方式工作,但前两个参数(事件类型和选择器)交换了:

$('#gridview').delegate('#id', 'click', function(e) {
    // do something when the element with an id of 'id' is clicked on
});

关于c# - 在 gridview asp.net mvc c# 的 jquery 中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12492218/

相关文章:

javascript - 如何使用 JjavaScript 和 MVC 在一个文本框中插入多个数据?

c# - WPF - 屏幕保护程序图形性能改进

c# - 模式匹配案例 when

javascript - 如何在给定时间内关闭浏览器?

javascript - 为网页创建弹出(或者是弹出窗口?)窗口

javascript - 我如何显示我的 table ?

c# - Winforms 按键和条形码扫描仪

c# - 为什么 base 关键字不能用在静态方法中?

javascript - 如何在 AngularJS 中使用 $HTTP 再次检索数据

Javascript 在 Firefox 3.6 中破坏页面