protectDefault () не работает с некоторым кодом в IE - PullRequest
0 голосов
/ 28 октября 2011

У меня есть несколько JS на моем сайте, которые должны препятствовать перезагрузке страницы следующим кодом (так как я использую AJAX, чтобы обновить ее часть), но в IE это всегда перезагрузка страницы. С любым другим браузером все в порядке.

JS, как дано в другой ветке -

$('#attachment-body').delegate("a", "click", function(e){
    e.preventDefault();
});

Ссылки, которые все еще перезагружают страницу (которая находится внутри контейнера #attachment-body) -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        <p><a id="previous-link" href="<?php echo get_permalink($attachments[$previous_position]->ID); ?>" title="<?php echo esc_attr(get_the_title($attachments[$previous_position]->post_title)); ?>" onclick="set_centre_image(<?php echo $attachments[$previous_position]->ID; ?>, <?php echo $previous_position; ?>)">&laquo; Previous Image</a></p>
    </div>
    <div id="nav-next" class="nav-next attachment-nav-next float-right">
        <p><a id="next-link" href="<?php echo get_permalink($attachments[$next_position]->ID); ?>" title="<?php echo esc_attr(get_the_title($attachments[$next_position]->post_title)); ?>" onclick="set_centre_image(<?php echo $attachments[$next_position]->ID; ?>, <?php echo $next_position; ?>)">Next Image &raquo;</a></p>
    </div>
</div>

Когда он отображается, это блок кода, сгенерированный выше -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        <p><a id="previous-link" href="http://mydomain.com/firm-news/summer-drinks-at-the-castle/summer-drinks-2011-6/" title="" onclick="set_centre_image(5144, 5)">&laquo; Previous Image</a></p>
    </div>
    <div id="nav-next" class="nav-next attachment-nav-next float-right">
        <p><a id="next-link" href="http://mydomain.com/firm-news/summer-drinks-at-the-castle/summer-drinks-2011-8/" title="" onclick="set_centre_image(5146, 7)">Next Image &raquo;</a></p>
    </div>
</div>

preventDefault() работает в IE, поскольку я использую его в других областях сайта, поэтому я могу только думать, что что-то в моем коде неверно.

Спасибо.

1 Ответ

0 голосов
/ 31 октября 2011

Мне кажется, я решил это сейчас ...

Когда щелкала следующая / предыдущая ссылка в моей галерее, она запускала функцию JS (используя onClick()), которая сначала очищала div, в котором я запускал preventDefault() agianst. Вместо этого я спрятал его, и теперь он работает.

Я не эксперт, но похоже, что IE тестирует методы .delegate(), .live() и click() после того, как запускает указанную встроенную функцию (что означает, что #attachment-body не существовало в точке проверял это), где другие браузеры делают это наоборот.

...