powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как выполнить два метода друг за другом jquery ?
9 сообщений из 9, страница 1 из 1
Как выполнить два метода друг за другом jquery ?
    #38401873
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как на jquery выполнить строго друг за другом два метода
$('#test').click();
$('#test2').mouseleave();
У этих методов нет callback?
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402361
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточняю вопрос - вот скрипт
<script type="text/javascript">
$(function(){
$("div:first").click(function(){
$(this).animate({height: "hide"}, 1000);
$(this).animate({height: "show"}, 1000);
});
$("div:last").mouseover(function(){
$("div:first").trigger("click");
$(this).css("background-color","#390");
});
});
</script>

Как добиться, чтобы в событии mouseover сначала полностью выполнился бы $("div:first").trigger("click"); , а уже затем $(this).css("background-color","#390"); ?????
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402383
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipКак добиться, чтобы в событии mouseover сначала полностью выполнился бы
Код: javascript
1.
$("div:first").trigger("click");

, а уже затем
Код: javascript
1.
$(this).css("background-color","#390");

?????
trigger() не имеет колбек вызова...
Как вариант, вызывай
Код: javascript
1.
$(this).css("background-color","#390");


после некоего таймаута...
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402407
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function myFynction($div, complete) {
    if (typeof complete === 'function') {
        $div.animate({ height: "hide" }, 1000, function () {
            $div.animate({ height: "show" }, 1000, complete);
        });
    } else {
        $div.animate({ height: "hide" }, 1000);
        $div.animate({ height: "show" }, 1000);
    }
}

$(function () {
    $("div:first").click(function () {
        myFynction($(this));
    });
    $("div:last").mouseover(function () {
        var $this = $(this);
        myFynction($("div:first"), function () {
            $this.css("background-color", "#390");
        });
    });
}); 

PS не проверял!
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402428
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipУточняю вопрос - вот скрипт
<script type="text/javascript">
$(function(){
$("div:first").click(function(){
$(this).animate({height: "hide"}, 1000);
$(this).animate({height: "show"}, 1000);
});
$("div:last").mouseover(function(){
$("div:first").trigger("click");
$(this).css("background-color","#390");
});
});
</script>

Как добиться, чтобы в событии mouseover сначала полностью выполнился бы $("div:first").trigger("click"); , а уже затем $(this).css("background-color","#390"); ?????
1. Вынести лапшекод в обработчики и методы;
2. Воспользоваться параметром complete метода .animate() ;
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$('div:first').click(onFirstDivisionClick);        
$('div:last').mouseover(onLastDivisionMouseOver);
      
function animate(element, complete) {
  element.animate({ height: 'hide' }, 1000);
  element.animate({ height: 'show' }, 1000, complete);
}
      
function onFirstDivisionClick() {
  animate($(this));
}
      
function onLastDivisionMouseOver() {
  var sender = $(this),
      complete = function() { sender.css('background-color', '#390'); };
                                   
  animate($('div:first'), complete);
}


3. Научиться выделять исходный код при помощи SRC.
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402433
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы, пока писал нормальный пример, Паганель уже работающий лапшекод запостил.
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402434
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA1. Вынести лапшекод в обработчики и методы;
2. Воспользоваться параметром complete метода .animate() ;
3. Научиться выделять исходный код при помощи SRC.
Что-то вспомнился старый, студенческий анекдот
авторСтуденты на экзамене... Заходит препод...
- Надеюсь все готовы? Ручки, листки приготовили? Зачетки с собой?
(голос с задних рядов)
- Во валит! Во валит!!!
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402542
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Мне больше понравилось решение на основе deferred объектов
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<script type="text/javascript">
$(function(){
$("div:first").click(function(){
  $(this).animate({height: "hide"}, 1000);
  $(this).animate({height: "show"}, 1000);
});
$("div:last").mouseover(function(){
$.when($("div:first").trigger("click")).done(function(args1) { $("div:last").css("background-color","#390"); });
});
}); 
</script>



Но здесь есть проблема в более сложном примере
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$('.has-dropdown').click(function(){
	
	var our_string = $(this).attr('class');	
	var poisk = our_string.indexOf('active') + 1;
	if(poisk==0) {
	$.when($('#test').trigger("click")).done(function(args1) {
	$(this).addClass('active');
	$(this).find(".concealer").css({'overflow' : 'hidden','zIndex':'1099'});
	$(this).find(".dropdown").css({'zIndex':'1100'});
	$(this).find(".dropdown").animate({top : hel,  queue: false},300);
	$(this).find(".concealer").animate({height: hel,  queue: false},300);	

	});
	}
	return false;
	});


В этом примере конструкция $(this).addClass('active'); относится к объекту #test , а не к тому классу , на который нажали !!!!
Как выйти из ситуации? Мне нужно, чтобы при нажатии на все объекты определенного класса, сначала выполнилась функция mouseleave этого класса, а уже потом непосредственно click
...
Рейтинг: 0 / 0
Как выполнить два метода друг за другом jquery ?
    #38402567
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извиняюсь
Мне нужно, чтобы при нажатии на все объекты определенного класса, сначала выполнилась функция mouseleave другого класса(или объекта), а уже потом непосредственно click
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как выполнить два метода друг за другом jquery ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]