jQuery Mobile 按钮单击事件不起作用

Posted

技术标签:

【中文标题】jQuery Mobile 按钮单击事件不起作用【英文标题】:jQuery Mobile button click event not working 【发布时间】:2013-06-01 03:05:39 【问题描述】:

我是 JQuery Mobile 的新手,所以请原谅这个可能很简单的问题。

我有一个按钮:

<a id="btnSort" href=# data-role="button"
                runat="server" onclick="Click_btnSort">Sort</a>

和代码隐藏事件处理程序:

protected void Click_btnSort(object sender, EventArgs e)
        
            ...
        

我在这个方法的开头有一个断点,但是当我点击按钮时它不会触发。

PS。我没有使用任何字段验证器。

有什么建议吗?

【问题讨论】:

你好。抱歉,这个“受保护的 void Click_btnSort(object sender, EventArgs e)”不是 javascript。你想跑什么? &lt;a id="btnSort" href=# data-role="button" onclick="Click_btnSort()"&gt;Sort&lt;/a&gt; 顺便问一下,你的方法是用 JavaScript 定义的吗? @AurelioDeRosa 即 ASP.NET 和 C#。 该方法来自页面的代码隐藏不是 JavaScript。我期待因为我使用了 runat="server" 我将能够使用 c# 代码隐藏来处理事件。我错了吗? 您是否尝试过添加监听器$(document).on('click', '#btnSort', function () Click_btnSort(); ); 【参考方案1】:

您的事件被 nog 触发的原因是因为您使用 html a 元素,该元素不会触发回发(也许当您将元素 autopostback 属性设置为 true 时会触发,不确定这是否适用于 a 元素)。

当您想在后面的代码中使用 ASP.NET 按钮单击事件(在单击时执行服务器端操作)时,您可能最好使用 ASP:Button 或 LinkBut​​ton 元素,它们开箱即用。

当您想使用客户端点击事件(例如,使用 jQuery,在点击时执行客户端操作)时,您最好为元素添加一个事件监听器,如下所示:

$(document).on('click', '#btnSort', function () 
 // client side stuff here
);

编辑:

请参阅此处了解与 jQuery 的基本客户端事件绑定。如果这看起来不熟悉,请阅读 JavaScript / jQuery 基础知识,这将是值得的时间

http://jsfiddle.net/6mYQN/1/

【讨论】:

【参考方案2】:

由于&lt;a&gt; 标签与服务器端控件无关,所以我想这不会像那样发生。

即使在服务器上运行,您的代码仍然会在 javascript 函数中查找 Click_btnSort,而不是在后面的代码中,因此您应该在脚本/javascript 标记中添加一个函数,其名称将在 onclick 事件中调用.

【讨论】:

【参考方案3】:

虽然这是一篇旧文章,但您可以创建一个

<asp:Button ID="btnServerSort" style="display:none;"  runat="server" Text="SORT" OnCommand="Click_btnServerSort" ..>  

具有关联的服务器端事件。

然后修改代码如下

<a id="btnSort" href=# data-role="button" data-ajax="false" runat="server"  onserverclick="Click_btnServerSort"   >Sort</a>

我希望这会有所帮助。

【讨论】:

以上是关于jQuery Mobile 按钮单击事件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

添加jquery键盘后,jquery按钮单击事件不起作用

Jquery移动按钮点击角落不起作用

为啥我的 jQuery on click 事件不起作用?

jQuery Mobile 滑动事件不起作用

按钮的 Jquery 单击事件在 ng-if div 中不起作用

为啥我的 jQuery Mobile 代码不起作用?