имитация нажатия на элемент ‹a› в javascript

для веб-сайта я использую скрипт галереи jQuery supersized: http://buildinternet.com/project/supersized/slideshow/3.2/demo.html

Как вы можете видеть в демонстрации, в правом нижнем углу есть маленькая кнопка со стрелкой, которая переключает панель эскизов. В файлах конфигурации нет опции для автоматического смешивания этого при открытии сайта.

Итак, я думаю, мне нужно имитировать щелчок по этой кнопке (кнопка - это кнопка в трее, см. HTML). Я пробовал что-то вроде этого:

<script>
$(function() {
    $('#tray-button').click();
});
</script>

Однако это не работает ни в одном браузере, который я тестировал.

Любая идея?


person Key    schedule 01.09.2011    source источник
comment
кажется, все в порядке: jsfiddle.net/Daess/7k7zm   -  person Igor Dymov    schedule 01.09.2011
comment
$('#tray-button').click() должен работать.   -  person s.webbandit    schedule 01.09.2011
comment
$('#tray-button').click(); запускает только любое событие щелчка, прикрепленное к этому элементу. Я думаю, вы пытаетесь открыть href, говоря $('#tray-button').click();!!! Сначала привяжите событие клика для этого элемента, а затем попробуйте запустить его.   -  person    schedule 01.09.2011


Ответы (7)


Попробуй это

$("#tray-arrow").live("click", function () {
               // do something

            });
person Prasanth    schedule 14.09.2011

Я предполагаю, что вы хотите, чтобы панель эскизов всплывала #thump-tray при загрузке страницы.

Вот как это сделать:

найдите файл supersized.shutter.js и найдите этот код:

// Thumbnail Tray Toggle
$(vars.tray_button).toggle(function(){
    $(vars.thumb_tray).stop().animate({bottom : 0, avoidTransforms : true}, 300 );
    if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button-tray-down.png");
    return false;
}, function() {
    $(vars.thumb_tray).stop().animate({bottom : -$(vars.thumb_tray).height(), avoidTransforms : true}, 300 );
    if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button-tray-up.png");
    return false;
});

После него добавьте:

$(vars.tray_button).click();

Не забудьте на своей странице (demo.html в плагине) изменить

<script type="text/javascript" src="theme/supersized.shutter.min.js"></script>

to

<script type="text/javascript" src="theme/supersized.shutter.js"></script>
person Benjamin Crouzier    schedule 01.09.2011

Вместо того, чтобы использовать

$(function(){
 //jquery magic magic
});

вы можете попробовать, что эта ведьма будет работать с вашей магией jquery после загрузки всей страницы (изображения и т. д.)

$(window).load(function () {
  // jquery magic
});

и для имитации клика, который вы можете использовать, // должно быть таким же, как $('#tray-arrow').click();

$('#tray-arrow').trigger('click',function(){ })

пример:

$(window).load(function () {
  $('#tray-arrow').trigger('click',function(){ 
      alert('just been clicked!'); 
  })
});
person user750158    schedule 01.09.2011
comment
$(function() {}); совпадает с $(window).load(function (){}); - person voigtan; 14.09.2011
comment
Ну, на самом деле $(window).load(function (){}); не активен после загрузки всей страницы (все img и т. д.). Подробнее см. здесь:ссылка - person user750158; 23.09.2011
comment
Это правда, но не важно ждать загрузки изображений, DOM есть, и событие привязано к DOM, а не к данным изображения. - person voigtan; 23.09.2011

пытаться

<script>
$(function() {
    $('#tray-arrow').click();
});
</script>

Убедитесь, что этот код находится после инициализации вашей карусели.

person Benjamin Crouzier    schedule 01.09.2011
comment
Нет, не работает! Я пытался посмотреть, что происходит (с Firebug) при нажатии на эту штуку (какая функция в JS называется), но я не могу понять? - person Key; 01.09.2011

Похоже, это проблема синхронизации триггера. Плагин также загружается при загрузке документа, поэтому, возможно, когда вы пытаетесь привязать прослушиватель событий, элемент еще не создан. Возможно, вам нужно добавить прослушиватель во что-то вроде функции theme._init http://buildinternet.com/project/supersized/docs.html#theme-init или что-то подобное.

person Geekfish    schedule 01.09.2011

Проблема может заключаться в том, что ваш плагин определяет, был ли щелчок инициирован пользователем (реальный щелчок мышью) или кодом (используя метод $('#id').click()). Если это так, то естественно, что вы не можете получить никакого результата, щелкнув элемент привязки через код.

Проверьте исходный код вашего плагина.

person Saeed Neamati    schedule 01.09.2011

person    schedule
comment
Добро пожаловать в StackOverflow! Обычно код лучше объяснять в тексте, а не в комментариях к коду. - person Artemix; 21.11.2012