Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как искусственно вызвать событие, назначенное кнопке в данном скрипте? (https://javascript.ru/forum/jquery/7944-kak-iskusstvenno-vyzvat-sobytie-naznachennoe-knopke-v-dannom-skripte.html)

begin 27.02.2010 22:44

Как искусственно вызвать событие, назначенное кнопке в данном скрипте?
 
Есть лента изображений, помещенных в div. Одновременно видны только 3 изображения. По бокам есть кнопки для плавной прокрутки ленты. Построено это вот так:

<link rel="stylesheet" type="text/css" href="gallerystyle.css" />
        <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
        <script type="text/javascript">
            var Gallery=function(){}
            Gallery.prototype={
        
                init: function(options){
                    defaults={
                        duration: 400,
                        zoomDuration: 400,
                        step: 110,
                        zoom: 1.63
                    }
                    this.options=$.extend(defaults, options);
                    this.container=$(options.container);
                    this.imgs=this.container.find('img');
                    this.zoomedImgs={};
                    this.initEvents();
                },
                
                initEvents: function(){
                    $(this.container).find('.left').bind('click', {gallery: this}, this.goLeft);
                    $(this.container).find('.right').bind('click', {gallery: this}, this.goRight);
                    $(this.container).find('.left2').bind('click', {gallery: this}, this.goLeft);
                    $(this.container).find('.right2').bind('click', {gallery: this}, this.goRight);
                },
                
                goLeft: function(event){
                    var gallery=event.data.gallery;
                    var options=gallery.options
                    var wrapper=gallery.container.find('.imgs');
                    var scrollLeft = gallery.scrollLeft != undefined ? gallery.scrollLeft-options.step : wrapper.scrollLeft()-options.step;
                    gallery.scrollLeft=scrollLeft;
                    wrapper.animate({
                        scrollLeft: scrollLeft
                    }, options.duration, function(){
                        gallery.scrollLeft=undefined;
                    });
                },
                
                goRight: function(event){
                    var gallery=event.data.gallery;
                    var options=gallery.options
                    var wrapper=gallery.container.find('.imgs');
                    var scrollLeft = gallery.scrollLeft != undefined ? gallery.scrollLeft+options.step : wrapper.scrollLeft()+options.step;
                    gallery.scrollLeft=scrollLeft;
                    wrapper.animate({
                        scrollLeft: scrollLeft
                    }, options.duration, function(){
                        gallery.scrollLeft=undefined;
                    })
                }
                
    
            }
            $().ready(function(){
                new Gallery().init({
                    container: '#gallery_container'
                })
            })
    
        </script>



Сама лента вставляется вот так:Код

<div id="gallery_container" class="gallery">
<div class="left" onclick="this.goLeft;"></div>
<div class="imgs">
<a href='index.php?option=3&id=01'><img src='photo/thumb_01.jpg'></a>
..
..
<a href='index.php?option=3&id=20'><img src='photo/thumb_20.jpg'></a>
</div>
<div class="right" onclick="this.goRight;"></div>
</div>



И все отлично работало. Но вот понадобилось искусственно вызывать прокрутку энное количество раз (чтобы при перезагрузке страницы сразу попасть в нужное место на ленте). Пробовал сделать вот так:Код

<div id="gallery_container" class="gallery">
<div class="left" onclick="this.goLeft;"></div>
<div class="imgs">
<a href='index.php?option=3&id=01'><img src='photo/thumb_01.jpg'></a>
..
..
<a href='index.php?option=3&id=20'><img src='photo/thumb_20.jpg'></a>
</div>
<div class="right" onclick="this.goRight;">
<?php
$ind=4; //нужно прокруть на 4 шага вправо
for ($i=1;$i<=$ind;$i++)
{
?>
<script type="text/javascript">
this.goRight;
</script>
<?php
}
?>
</div>
</div>


Но ничего не происходит. Подскажите, как правильно вызвать событие прокрутки несколько раз без нажатия элемента <div class="right"> ?

sysya 28.02.2010 08:19

Ужс какой та...
Так попробуйте:
&lt;div id="gallery_container" class="gallery">
<div class="left" onclick="this.goLeft;"></div>
<div class="imgs">
<a href='index.php?option=3&id=01'><img src='photo/thumb_01.jpg'></a>
..
..
<a href='index.php?option=3&id=20'><img src='photo/thumb_20.jpg'></a>
</div>
<div class="right" onclick="this.goRight;">

$('.right').goRight;

</div>
</div>

begin 28.02.2010 20:10

Цитата:

Сообщение от sysya (Сообщение 46308)
Ужс какой та...
Так попробуйте:

Попробовал:
<div id="gallery_container" class="gallery"> 
<div class="left" onclick="this.goLeft;"></div> 
<div class="imgs"> 
<a href='index.php?option=3&id=01'><img src='photo/thumb_01.jpg'></a> 
.. 
.. 
<a href='index.php?option=3&id=20'><img src='photo/thumb_20.jpg'></a> 
</div> 
<div class="right" onclick="this.goRight;"> 
<?php
$ind=4; //нужно прокруть на 4 шага вправо 
for ($i=1;$i<=$ind;$i++) 
{ 
?> 
<script type="text/javascript"> 
$('.right').goRight;
</script> 
<?php
} 
?> 
</div> 
</div>

Не работает :help:

sysya 28.02.2010 20:38

Зачем цыкл for php-шный сюда вставили, это не поможет

begin 28.02.2010 20:42

Цитата:

Сообщение от sysya (Сообщение 46349)
Зачем цыкл for php-шный сюда вставили, это не поможет

Даже если я сделаю вот так, то все равно не работает:

<div id="gallery_container" class="gallery">  
<div class="left" onclick="this.goLeft;"></div>  
<div class="imgs">  
<a href='index.php?option=3&id=01'><img src='photo/thumb_01.jpg'></a>  
..  
..  
<a href='index.php?option=3&id=20'><img src='photo/thumb_20.jpg'></a>  
</div>  
<div class="right" onclick="this.goRight;">  
<script type="text/javascript">  
$('.right').goRight; 
$('.right').goRight; 
$('.right').goRight; 
$('.right').goRight; 
</script>  
</div>  
</div>

sysya 28.02.2010 20:52

показать возможно страницу полностью? Адрес например

sysya 09.08.2011 10:59

$('.right').trigger('click');
//или 
$('.right').triggerHandler('click');
Думаю при загрузке страницы, сработает клик или обработчик события перелистывания...

эту каку запустить во временном цикле с помощью setInterval и как то заставить перелеснуть 4 раза, а затем остановить скрипт этот.

если я ошибаюсь поправьте пожалуйста, так как проверить код места нету пока

devote 09.08.2011 11:08

можно просто
$('.right').click();


Часовой пояс GMT +3, время: 13:57.