Gridview TH中未引发jQuery事件

jQuery event not raised in Gridview TH

本文关键字:jQuery 事件 TH Gridview      更新时间:2023-09-26

我有一个用一些数据填充的网格视图。

<asp:GridView ID="GridView1" runat="server" ClientIDMode="Static">
</asp:GridView>

代码:

    if (!IsPostBack)
    {
        using (DataClassesDataContext dc = new DataClassesDataContext())
        {
            GridView1.DataSource = dc.Regions.ToList();
            GridView1.DataBind();
        }
    }

我想当我点击TH部分时,会显示一个警报。我写了这个代码:

   <script type="text/javascript">
    $('#GridView1 th').on("click", function () {
        alert("nima");
     });   
</script>

但它不起作用。我的错在哪里?

感谢


编辑1)I编辑主问题,并为选择器添加'。我忘了打字了。问题是,当我写这段代码时,它是有效的。我想知道上不起作用:

$('body').live('click','#GridView1 th', function () {
        alert("hello");
    });  

您确定正在编写$(#GridView1 th)吗?应至少为$('#GridView1 th')。。。并检查"查看源代码",以查看嵌套在其他ASP.NET控件中的正确ID是否永远不会是GridView1。。。

为了在任何ASP.NET控件中保持安全,您应该使用ClientID属性,这样您就可以始终编写:

<script type="text/javascript">
    var grid = '<%= GridView1.ClientID %>';
    $("#" + grid + " th").on("click", function () {
        alert("hello");
     });   
</script>

并且在源代码中验证,如果您真的有一个表头<th>,正如我所知,它在早期的GridView中是可选的。。。

从您的代码中,您只是忘记了脚本在页面上一出现就会运行,而且大多数情况下表代码都不在那里。。。

更改此项:

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $('#GridView1 th').on('click', function () {
        alert("nima");
    });  
</script>

进入这个

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
       $('#GridView1 th').on('click', function () {
          alert("nima");
       });  
    });
</script>

或者简单地将脚本代码附加在页面的末尾,这样当浏览器到达该行时,所有其他代码都已呈现并可用于DOM。

以下是您的代码的实时示例:http://jsbin.com/etamug/edit#javascript,html只需单击Render按钮即可查看所有设置并运行。。。

我使用了$(function() {});作为快捷方式,但原始方法是我在这个答案中指定的方法。

您可以在jQuery网站

中查找有关$(document).ready()的更多信息