2014-10-27 3 views
0

Итак, конкретный вопрос ... В global.js BuddyPress мы находим это ...Как предотвратить конкретный .animate() запуск через отдельный JQuery скрипт

/* Textarea focus */ 
jq('#whats-new').focus(function(){ 
    jq("#whats-new-options").animate({ 
     height:'40px' 
    }); 
    jq("form#whats-new-form textarea").animate({ 
     height:'50px' 
    }); 
    jq("#aw-whats-new-submit").prop("disabled", false); 

    var $whats_new_form = jq("form#whats-new-form"); 
    if ($whats_new_form.hasClass("submitted")) { 
     $whats_new_form.removeClass("submitted"); 
    } 
}); 

Что меня беспокоит это анимация. Я хотел бы полностью отменить их через отдельный файл jQuery (чтобы не испортить файлы BuddyPress). Я попытался дублировать строки и использовать варианты .stop(), .stop (true) и даже .clearQueue(), но без разрешения. Есть ли способ отменить событие или полностью предотвратить его? Позвольте мне также добавить, что у меня есть отдельный скрипт, который автоматически обрабатывает текстовое поле, когда он используется, поэтому я не хочу настройки и не хочу ограничивать размер текстового поля. Проблема, с которой я сталкиваюсь, заключается в том, что, как указывает global.js, когда пользователь щелкает за пределами области textarea (размытие), а затем повторно кликает в текстовом поле (фокус), текстовая область снова изменяется на 50 пикселей.

+0

Я бы удалил подключенных прослушивателей событий для события 'focus' из' textarea'. –

+0

Я просто попытался ... $ ('# whats-new'). Focus(). Off(); но это не мешает событию. –

+0

Это должно быть '$ ('# whats-new'). Off ('focus')' –

ответ

0

Andrew Parris, вы пробовали метод .finish()? .finish() вызывается в элементе, текущая анимация и все очереди в очереди (если есть) немедленно останавливаются и их свойства CSS устанавливаются в их целевые значения. Все очереди в очереди удаляются.

+0

Вот и все. Я не хочу никакого эффекта. Я не хочу, чтобы textarea менялось на это событие. –

0

Не могли бы вы переписать стиль элемента css с помощью важного правила или даже добавить класс с этим стилем. Это должно гарантировать, что все элементы с идентификатором, который вы пытаетесь сохранить на 40 пикселей, не будут изменены.

#whats-new-options { 
    height: 40px !important; 
} 

Вы также можете посмотреть на использование метода JQuery unbind, чтобы удалить событие из элемента.

+0

Я пытаюсь удалить событие, так как у меня есть скрипт, выполняющий автоматическую сортировку текстового поля во время его использования.Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь щелкает за пределами области textarea, а затем отбрасывает ее (таким образом, повторно применяя фокус), textarea перенастраивает размер до 50 пикселей на основе инструкции BuddyPress global.js. Вот почему я пытаюсь полностью удалить событие. –

+0

Вы пробовали jQuery [unbind method] (http://api.jquery.com/unbind/), чтобы удалить событие из этого элемента. Тем не менее, я бы подумал, используя CSS, чтобы гарантировать, что textarea всегда остается на 40px, будет устранено необходимость удалить событие. –

0

Попробуйте приведенный ниже код

jq('#whats-new').unbind('focus') 

Это удалит focus event из jq('#whats-new')

0

Я Решенный это сам. Мой не работает код ...

$('#whats-new').focus(function(){ $('#whats-new-options').stop(true); $('form#whats-new-form textarea').unbind('focus'); console.log('focus'); }); 

$('#whats-new').blur(function(){ $('#whats-new-options').stop(true); $('form#whats-new-form textarea').unbind('blur'); console.log('blur'); }); 

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

$('#whats-new').blur(function(){ $('#whats-new-options').stop(true); $('form#whats-new-form textarea').unbind('focus blur'); }); 

работает, как предполагалось в настоящее время Тхо я до сих пор не уверен, почему в центре линии просто отказались стрелять.

Смежные вопросы