Подтвердить что ты не робот

Не удалось запустить jQuery триггера

Я выясняю, почему этот простой script не работает:

jQuery.noConflict();
jQuery(document).ready(function() {
    jQuery('.next_button a').trigger('click');
});

noConflict необходимо, потому что я также загружаю прототип /scriptaculous на этой странице.

Если я заменил .trigger('click') на другую функцию (es: .css(...), это будет хорошо работать. Только срабатывание кажется сломанным.

4b9b3361

Ответ 2

Вы можете вызвать только щелчок, созданный jQuery. Это один из jQuery симпатичных маленьких причуд.

Ответ 3

как ответил Гэри. код ниже не будет работать.

$('#border_wrap').trigger('click');    
$('#border_wrap').click(function(e){
    console.log("clicked1");
});

но это будет...:)

$('#border_wrap').click(function(e){
    console.log("clicked1");
});
$('#border_wrap').trigger('click'); 

Ответ 4

Я подумал, что эта демонстрация не будет работать, но это (Chrome 12). Это будет alert два сообщения, по одному для каждого события кликов. Один из них создан jQuery, а один является родным, но я думал, что могут запускаться только события jQuery.

Изменить: Да < <21 > не соответствует href.

Изменить 2: Таким образом, событие, которое вы хотите запустить вручную, на самом деле является событием, созданным плагином прототипов карусели. В приведенном ниже коде я предполагаю, что это этот. Если это так, почему бы вам просто не использовать запустить событие с использованием Prototype или изначально & hellip; например:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
        #carousel-wrapper {
            width:100px;
            height:100px;
            overflow:hidden;
            border:1px dashed red;
        }
        #carousel-content {
            width:500px;
        }
        #carousel-content .slide {
            float:left;
            width:100px;
            height:100px;
        }
    </style>

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js"></script>
    <script type="text/javascript" src="http://prototype-carousel.googlecode.com/files/carousel-min.js"></script>
    <script type="text/javascript" src="https://github.com/kangax/protolicious/raw/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
        jQuery.noConflict();

        function fakeClick(event, anchorObj) {
          if (anchorObj.click) {
            anchorObj.click()
          } else if(document.createEvent) {
            if(event.target !== anchorObj) {
              var evt = document.createEvent("MouseEvents");
              evt.initMouseEvent("click", true, true, window,
                  0, 0, 0, 0, 0, false, false, false, false, 0, null);
              var allowDefault = anchorObj.dispatchEvent(evt);
              // you can check allowDefault for false to see if
              // any handler called evt.preventDefault().
              // Firefox will *not* redirect to anchorObj.href
              // for you. However every other browser will.
            }
          }
        }
    </script>
</head>
<body>
<div id="carousel-wrapper">
    <div id="carousel-content">
        <div class="slide">1</div>
        <div class="slide">2</div>
        <div class="slide">3</div>
    </div>
</div>
<div>
    <a href="javascript:" class="carousel-jumper" rel="slide-1">Jump to slide 1</a>
    <a href="javascript:" class="carousel-control" rel="prev">Previous slide</a>
    <a href="javascript:" class="carousel-control" id="next" rel="next">Next slide</a>
</div>
<script type="text/javascript">
    new Carousel('carousel-wrapper', $$('#carousel-content .slide'), $$('a.carousel-control', 'a.carousel-jumper'));

    document.observe("dom:loaded", function() {
//        $$('a[rel="next"]')[0].simulate('click');
        fakeClick(event, document.getElementById('next'));
    });
</script>
</body>
</html>

В этой демонстрации запуска событий есть два примера (один закомментирован, но вы можете переключиться на тот же результат). Один из запускает событие с прототипом, в котором используется event.simulate.js, а один используется fakeClick() функция из Как я могу имитировать щелчок на якорный тег?. Любой из них работает для меня в Chrome 12.