2016-07-12 3 views
1

Я искал и havent смог получить любое из решений для работы. (И я не 100% ясно, почему?)jQuery: Перейти к тегу привязки из раскрывающегося списка (выбор)?

Я динамически строит ниспадающее меню (выбор) коробка ...

добавив соответствующее имя тега привязки (номер) на значение каждого параметра в выберите поле.

У меня есть JQuery, чтобы наблюдать за каких-либо изменений в поле выбора и «прыжок» в походной якорь тегов/имя ...

Но это не работает.

В зависимости от подхода, который я стараюсь, и я получаю эти ошибки:

TypeError: $(...).offset(...) is undefined  

$("html, body").animate({scrollTop: $('#' + $(this).val()).offset().top}, "slow"... 

или:

Error: Syntax error, unrecognized expression: ##15 

, когда у меня есть # в операторе JQuery и без:

Вопрос 1 : Должен ли я помещать # в значение ввода параметра? или сохранить его в выражении jQuery?

JQuery:

$('#topic_entries').change(function(){         
      //populate fields with video details    
      if($('#topic_entries option:selected').text() == 'No Videos Found'){ 
       //do nothing (dead)  
      }else{ 
       var targetAnchor = $(this).val(); 
       console.log(targetAnchor);    
       //$('html,body').animate({scrollTop: targetAnchor}, 'slow'); 
       //$('html, body').animate({'scrollTop': $(targetAnchor).top}, 2000);   
       //$('html, body').animate({scrollTop: $(targetAnchor).offset().top}, 1000); 
       $('html, body').animate({scrollTop: $('#' + $(this).val()).offset().top}, "slow"); 

      } 
     }); 

Что я здесь отсутствует? Я просто хочу, чтобы иметь простой «прыжок на якорь» функции выполняется из выбора выпадающего (значение)

Отсутствует HTML часть:

for($i=0; $i<count($results); $i++){ 
    //update currentTopic 
    $currentTopic = $results[$i]['topic']; 
    echo '<option value="'.$i.'">' . $currentTopic . '</option>'; 
    //echo '<option value="#'.$i.'">' . $currentTopic . '</option>'; 
} 

============== ================================

обновление Решение:

Ну это кажется простым и быстрым исправить было использовать эту линию вместо:

window.location.hash = targetAnchor; 

Но мне любопытно, почему ни одна из попыток jQuery не работала для меня? (То есть: что я делал в-правильно)

+1

Покажите нам часть HTML, мой хрустальный шар ничего не сообщает. – ViRuSTriNiTy

+0

@ViRuSTriNiTy достаточно справедливо (хотя я проверил это правильно (Firebug) и все 'ценности' являются правильными) 'для ($ I = 0; $ я <число ($ результатов); $ я ++) {\t \t \t \t \t \t \t \t \t \t \t \t \t $ currentTopic = $ результаты [$ я] [ 'тема']; \t \t \t \t \t \t \t echo ''; \t \t \t \t \t \t \t // echo ''; \t \t \t \t \t \t} ' – whispers

+0

ли вы оказываете вы анкеры с идентификатором атрибута, как' '? – ViRuSTriNiTy

ответ

1

Вам нужно сделать якоря с идентификатором атрибута, как

<a id="foo"></a> 

Кроме того, убедитесь, что $(this).val() в вашем выборе JQuery $('#' + $(this).val()) возвращает значение атрибута ид только для правильного выбора селектора jQuery, например #foo, как показано на рисунке выше.

+0

принят как ответ на исходный вопрос подхода jQuery. – whispers

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