Прочитав его и несколько раз «отключившись» для использования live
, в отличие от on
Я перемещаю весь свой код до on
... и с множеством проблем! !Проблемы с jQuery On, в частности с iPad
Большая часть этого я преодолел, но сегодня у меня очень странная проблема.
У меня есть вопрос/ответ доска объявлений вещь, где заголовки сообщений отображаются, но содержимое загружается динамически при нажатии на заголовок, то 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();
};
});
Теперь, это прекрасно работает на моем компьютере, но ненадежно на IPad.
Это НЕКОТОРЫЕ РАБОТЫ, и я не могу понять какой-либо закономерности относительно того, почему и когда это будет работать.
я изначально имеют on
привязки выглядеть следующим образом:
$('.headerRow').on('click', '.openCurrent', function (e).....
Но после прочтения об ошибке в мобильном Safari, здесь:
jQuery .on() and .delegate() doesn't work on iPad
я изменил его к телу, но это не имело никакого отношения к поведению.
Я также заметил, что мобильный Safari не будет вызывать события click
, если в этом случае элемент не имеет CSS cursor:pointer
, у меня есть это уже на месте, поскольку оно имеет смысл визуально на графическом интерфейсе рабочего стола.
У кого-нибудь есть идеи?
EDIT:
Это не работает в Chrome на IPad тоже!
Дополнительные Edit:
Я также попытался связыванием события щелчка к headerRow
элементу, но получить такую же проблему
Вы пытались делегировать событие вместо 'document'? – Jai
Вопрос, связанный на самом деле, говорит, что пузырь до тела не работает –
Извините, неверно процитировал себя там, но, да, я пробовал «документ». Я до сих пор не могу заставить клики работать надежно на iPad, странно вещь есть, иногда бывает –