Триггер Jquery (‘click’) не работает в IE

#jquery #events #click #preventdefault #prettyphoto

#jquery #Мероприятия #нажмите #preventdefault #prettyphoto

Вопрос:

Я обновляю это еще раз, это не удается только в некоторых версиях IE. Это что-то с последней строкой в коде js. «$ ($nextlink).trigger(‘click’);» что некоторые версии IE не могут обработать… Можно ли обойти это, чтобы убедиться, что оно работает во всех версиях IE?

Вот javascript…

 $(".trigger").live('click',function() {
 if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } // to prevent default link to image, event.returnValue = false; for it to work in IE.
    var $currentId =$(this).attr('id'); //The Id of the clicked thumbnail
    var $newlink = $currentId   '.php'; //The new images in a .php file
    var $newcontent = '#'   $currentId   'box'; //Where to load
    var $nextlink = '#'   $(this).next().attr('id'); //The simulated click id
    $($newcontent).load($newlink, function() {
    $("a[rel^='prettyPhoto']").prettyPhoto({animation_speed:'fast',theme:'light_square',slideshow:3000, autoplay_slideshow: false, hideflash: true, deeplinking:false});
$($nextlink).trigger('click');
    });
});
  

HTML:

 <li class="projectitem photo" data-id="id-1">
<div class="grid_1 projectbox">
<div class="boxcontain surf">
<a id="surf" class="trigger" href="img/_MG_8635.jpg"><img class="fade" src="img/thumb_surfbw.jpg" title="Surfing" style="background: url(img/thumb_surfcolor.jpg);" alt="Surfing" /></a>
<a id="surflink" class="hide" rel="prettyPhoto[surfing]" href="img/_MG_8635.jpg" title='<strong>Project: </strong>Photo gallery of my selected surf photos from Hawaii<br><strong>Year: </strong>2011<br><strong>Type: </strong>Photo'><img class="fade" src="img/thumb_surfbw.jpg" title="Surfing" style="background: url(img/thumb_surfcolor.jpg);" alt="Surfing" /></a>
<div id="surfbox" class="hide">blank</div>
<h4>Surfing</h4>
</div></div></li>
  

Итак, в основном два вопроса:

  1. Почему щелчок мыши не имитируется в некоторых версиях IE?

  2. Почему он не работает в Firefox? (У меня была проблема с событием.preventdefault не работал в firefox, но теперь это исправлено, см. Ниже)

Смотрите полный пример на http://jgriph.se

Комментарии:

1. Вы слишком усложняете синтаксис .. почему бы и нет $(this).next().click() ??

2. Во-первых, event не определено

3. Кажется, что для этого требуется некоторый рефакторинг … можете ли вы псевдокодировать именно то, что вы хотите сделать, пожалуйста?

4. Теневой мастер, он не работает только с $(this), Уэсли Марч, как мне это определить? Извините, я новичок в jquery. :/

5. Я пытался сделать это другими способами, но это был единственный способ заставить его работать (chrome)…

Ответ №1:

Изменить

 $(".trigger").live('click',function() {
 if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; }
  

Для

 $(".trigger").live('click',function(event) {
 if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; }