阅读了它并多次被“告知”使用live
,而不是on
我将所有代码移到on
......并且遇到了很多麻烦!
我已经克服了大部分,但是今天我遇到了一个非常奇怪的问题。
我有一个问题/答案公告板的东西,其中显示了消息标题,但在单击标题时会动态加载内容,HTML 是
<div class="headerRow" id="header_<%# Eval("headerId")%>">
<span class="delete" id="delete_<%# Eval("msgId")%>"></span>
<span class="markClosed" id="close_<%# Eval("headerId")%>"></span>
<span id="view_<%# Eval("msgId")%>" class="openCurrent">
<span class="customerData userCol">
<span class="qName"><%# Eval("customerName")%></span>
<span class="qEmail">(<%# Eval("email")%>)</span>
</span>
<span class="subjectCol"><%# Eval("subject")%></span>
<span class="timeCol"><%# Eval("dateTime")%></span>
</span>
<span class="reply" id="reply_<%# Eval("msgId")%>"> Reply </span>
</div>
因此,我们有一个headerRow
容器,其中有一些用于关闭或删除消息线程的按钮,然后是一个span
包含消息详细信息、用户名、电子邮件主题的按钮,然后是一个用于打开回复表单的按钮。
带类的跨度openCurrent
在绑定上有一个 jQuery,如下所示:
$('body').on('click', '.openCurrent', function (e) {
var msgid = extractNumbers($(this).attr('id')); // sub function to pull the message ID from the element ID
if ($('#content_' + msgid).html() == '') {
$(but).addClass('centreLoader');
getMsgContent(msgid, 'absolute', function (result) {
// getMsgContent is an AJAX call returning the message
$('#content_' + msgid).html(result).slideToggle();
});
} else {
$('#content_' + msgid).slideToggle();
};
});
现在,这在我的 PC 上完美运行,但在 iPad 上不可靠。
它有时会起作用,我无法弄清楚它为什么/何时会起作用的任何模式。
我最初的on
绑定看起来像这样:
$('.headerRow').on('click', '.openCurrent', function (e).....
但是在阅读了移动 Safari 中的一个错误之后,这里:
jQuery .on() 和 .delegate() 在 iPad 上不起作用
我将其更改为身体,但对行为没有影响。
我之前也注意到,click
除非在这种情况下元素具有 CSS,否则移动 Safari 不会触发事件cursor:pointer
,我已经有了它,因为它在桌面 GUI 上视觉上是有意义的。
有人有什么想法吗?
编辑:
它在 iPad 上的 Chrome 中也不起作用!
附加编辑:
我也尝试将点击事件绑定到headerRow
元素,但遇到同样的问题