Сочетание эффектов jQuery - PullRequest
       2

Сочетание эффектов jQuery

1 голос
/ 30 ноября 2011

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

Есть идеи отложить удаление?

$("#<%= dom_id(@stock) %>").effect("highlight", {}, 4000)
$("#<%= dom_id(@stock) %>").remove()

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011

Проблема в том, что .remove() не может быть отложено. Это одна из тех функций, которая срабатывает сразу, что означает, что .delay() ничего не делает.

Однако функция JavaScript setTimeout() будет:

$('#g').click(function(){
$("#hi").hide("highlight", {}, 4000)
setTimeout('$("#<%= dom_id(@stock) %>").remove();', 4100)
});

Вот пример этого на jsFiddle .

1 голос
/ 30 ноября 2011

.effect () имеет аргумент обратного вызова, который будет вызван после завершения эффекта. См. Эффект демо .

$("#<%= dom_id(@stock) %>").effect("highlight", {}, 4000, function() {
    $("#<%= dom_id(@stock) %>").remove();
});
1 голос
/ 30 ноября 2011

Является ли effect плагином jQuery?Я не могу найти какую-либо документацию по этой функции на сайте jQuery.

Используйте jQuery Animate , потому что вы получили обратный вызов после завершения анимации.

  $("#<%= dom_id(@stock) %>").animate({
    opacity: 0.25,
  }, 4000, function() {
    // Animation complete.
    $("#<%= dom_id(@stock) %>").remove();
  });

Обновление

, как сказал Shawn31313

effect(..)

является частью пользовательского интерфейса jQuery, и эта функция также поддерживает «обратные вызовы» после выполнения эффекта. jQuery UI Effect

надеюсь, это поможет

...