jquery click事件不会触发iPhone中的按钮元素

时间:2015-04-03 15:14:24

标签: javascript jquery ios css iphone

使用:

  • Visual Studio 2013
  • MVC5
  • jQuery 1.10.2

<button>元素的.click()事件不会在iPhone上调用。我的MVC项目中的所有<button>元素都是这种情况。它已在多款iPhone(iPhone 5和iPhone 6设备)上进行了测试,因此它似乎不是一个孤立的问题。

它还在具有Firefox,IE和Chrome的PC上进行了测试,并按预期工作。它还在Android设备和Windows手机上进行了测试,并且.click()事件正常运行。我无法确定这是Safari,Safari Mobile,iPhone还是iOS问题。

我在Stack Overflow上发现有关iOS设备的讨论有时不适用于本身不可点击的元素,除非您添加CSS样式以将光标转换为指针(cursor : pointer)。但是,此解决方法仍然不适用于<button>元素。

我认为值得一提的是,当使用锚标记(<a>)并将其设置为类似按钮时,.click()事件会在iPhone设备上触发。

有没有人经历过这个,如果有的话,知道一个解决方法吗?我知道我可以将所有<button>元素更改为<a>标记,如果必须,我会这样做。但我想理解为什么会发生这种情况,以及我是否正在做些什么来解决这个问题。非常感谢。

下面是我正在使用的标记和jquery代码的片段:

$(document).ready(function () {

    $('#taskContainer').on('click', '#btnSave', function (event) {
        console.log('save button clicked');
    });
  
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div id="taskContainer">
  <button id="btnSave" class="btn btn-primary">Save</button>
</div>

1 个答案:

答案 0 :(得分:0)

在点击触发器结束时使用return false:

$('#taskContainer').on('click', '#btnSave', function (event) {
    console.log('save button clicked');
    return false;
});