2013-06-25 5 views
0

Я бросаю полотенце. Я пытался понять это все утро, но не могу, чтобы жизнь меня поняла. Я до сих пор новичок в javascript, но я медленно туда добираюсь.На активном слайде добавьте вход

Я пытаюсь сделать свой активный слайд div добавлением значения к моему поисковому вводу. Я пытаюсь сделать это с помощью простой hasClass, если инструкция append val() для ввода.

Приложение работает, то есть будет добавлено последнее оператор if, и в этом случае «Rain Forest», однако, когда изменяется активное состояние слайда, я не могу заставить значение изменить на следующее добавленное значение относительно активный слайд. С чего это связано?

Если бы вы могли помочь, я был бы очень признателен.

Вот код, я работаю с:

jQuery(document).ready(function($) { 
/* dog shelter */ 
if($('.rsActiveSlide .rsABlock').hasClass("dog-shelter-input")){ 
     $(".feature-search #name_or_keywords").val(''); 
}else { 
    $('.feature-search #name_or_keywords').val('Dog Shelter'); 
}; 

/* scolarships */ 
if($('.rsActiveSlide .rsABlock').hasClass("scholar-input")){ 
     $(".feature-search #name_or_keywords").val(''); 
}else { 
    $('.feature-search #name_or_keywords').val('Scholarships'); 
}; 

/* Rain Forest */ 
if($('.rsActiveSlide .rsABlock').hasClass("forest-input")){ 
    $(".feature-search #name_or_keywords").val(''); 
}else { 
    $('.feature-search #name_or_keywords').val('Rain Forest'); 
    }; 
}); 

Спасибо!

+1

У вас есть скрипка? Тогда мы можем попытаться исправить это. :) – rusln

+0

Что-то подсказывает мне, что если вы указываете '$ ('. Feature-search #name_or_keywords')' вместо просто '$ ('# name_or_keywords')', что у вас есть несколько экземпляров '# name_or_keywords' на том же стр. Это так?Это может привести к тому, что jQuery будет вести себя непредсказуемо. – Wex

+1

Код выполняется на document.ready, это означает, что при загрузке страницы один раз, если «активное состояние слайда» изменяется динамически, вы не сможете произвести ожидаемое поведение. Решение: выполните вызовы функций. – face

ответ

1

Кодирование здесь, для тех, кто наткнулся на сообщение позже.

$(document).ready(function(){ 
    var slider = $(".royalSlider").data('royalSlider'); 
    slider.ev.on('rsAfterSlideChange', function(event) { 
     //Your handler here 
     //if($('.rsActiveSlide .rsABlock').hasClass("dog-shelter-input")){ ...... 
     //....... 
     //...}; 
    }); 
)}; 
+0

Красиво сделано сэр – BeDesinged

+0

Если ваша проблема решена, вы должны отметить ее так. :) – face

+0

Правильно сказано. Я знаю, что это правильно, с тех пор оно прекрасное. На данный момент мой код застрял в определении функции slider.ev.on ('rsAfterSlideChange', function (event) {..} Чтобы определить, нужно ли мне устанавливать переменную ползунка? например: var slider = $ (". royalSlider"). data ('royalSlider'); – BeDesinged

1

Не уверен, что вы используете плагин слайдера, или если вы скатываете свой собственный. Таким образом, на высоком уровне вы можете сделать следующее:

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

2) если вы перевернули свой собственный слайдер и, скорее всего, используете .animate(), снова обеспечите функцию обратного вызова .animate(), которая вызывается, когда анимация завершается. Тот же обратный вызов, что и в опции №1.

Я написал свой собственный слайдер и использую полный обратный вызов анимации для выполнения других действий. Это должно сделать трюк для вас.

Надеюсь, вы в правильном направлении.

+0

Это было полезно. Я использую royalslider. Я проверю, обеспечивают ли они функцию обратного вызова. – BeDesinged

+0

@BeDesigned Я быстро посмотрел на него, и у него есть событие, в которое вы можете подключиться. Ползунок имеет событие изменения слайда, для которого вы можете обеспечить обратный вызов. См. 'Slider.ev.on ('rsAfterSlideChange', function (event) { // триггеры после смены слайдов }); 'Для получения дополнительной информации посетите [RoyalSlider API Docs] (http://dimsemenov.com/plugins/royal-slider/documentation/#api) – emgee

+0

Итак, что-то вроде' slider.ev.on ('rsAfterSlideChange', function (event) {// Ваша полная if else logic}); 'должен делать это за вас. – face

0

@face, @emgee извините решения этого вопроса раньше, я действительно думал, что это будет работать .. Я до сих пор не выяснить это, хотя. Код выглядит правильно ... но я все еще получаю ошибки. В частности, с «slider.ev.on» - Uncaught TypeError: Невозможно прочитать свойство «ev» undefined

Вот мой код.

 jQuery(document).ready(function($) { 

      var sliderEL = $('.new-royalslider-1'); 
      var slider = sliderEL.data('royalSlider'); 

      var addSearch = function() { 

       if($('.rsActiveSlide .rsABlock').hasClass("dog-shelter-input")){ 
        $(".feature-search #name_or_keywords").val(''); 
       }else { 
        $('.feature-search #name_or_keywords').val('Dog Shelter'); 
       } 

       if($('.rsActiveSlide .rsABlock').hasClass("scholar-input")){ 
        $(".feature-search .#name_or_keywords").val(''); 
       }else { 
        $('.feature-search #name_or_keywords').val('Scholarships'); 
       } 
      }; 

      slider.ev.on('rsAfterSlideChange', addSearch); 

      addSearch(); 

     }); 

некоторые важные темы были:

http://help.dimsemenov.com/discussions/royalslider-wordpress/1584-use-js-api-on-wordpress-version-to-change-image-scale-mode

http://help.dimsemenov.com/discussions/royalslider-wordpress/2601-adding-slider-index-to-wordpress-gives-a-js-error

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