2015-02-05 8 views
1

Я пытаюсь установить меню выпадающего меню внутри среды ссылок: (Также я прочитал, что с HTML5 можно спокойно «окружить» вокруг div. Любые мысли?)Выпадающее меню не работает

  <a href=""> 
       <div id="foo"> 
        <select> 
         <option value="a">Stuff</option> 
         <option value="b">More stuff</option> 
        </select> 
       </div> 
      </a> 

во всяком случае, по крайней мере, в Chrome это не работает правильно: Если открыть меню, среда нажатия на ссылку и страница обновляется. В IE это работает так, как я этого хочу. Я попробовал z-index, но это не работает для Chrome.

Спасибо заранее,

Леннарт

+1

Вы должны поместить входной элемент внутри якоря, он будет ошибкой, когда вы нажмете его для его выпадающего списка, как вы обнаружили – Huangism

+0

Тогда я думаю, http://css-tricks.com/snippets/jquery/make-entire -div-clickable/не является надежным решением. Спасибо. –

+1

Вы можете обернуть div, но не делайте этого вслепую. У вас есть выбор, если у вас есть только текст и изображения, он будет работать нормально – Huangism

ответ

1

два метода, оба довольно просто.

  1. Уберите href="" часть элемента <a>. Это то, что отправляет запрос обратной передачи и обновляет страницу.
  2. Если вы хотите сохранить ссылку по любой причине. Сделайте событие click false false. Добавьте это в <a> тег: onclick="return false;".

Как так:

<a href="" onclick="return false;"> 
 
    <div id="foo"> 
 
    <select> 
 
     <option value="a">Stuff</option> 
 
     <option value="b">More stuff</option> 
 
    </select> 
 
    </div> 
 
</a>

Если вы хотите автоматизировать второй метод, вы можете добавить некоторые JavaScript:

var dropdownlink = document.getElementsByTagName("a"); 
 

 
for (var i = 0; i < dropdownlink.length; i++) { 
 
    if (dropdownlink[i].getElementsByTagName("select").length > 0) { 
 
    dropdownlink[i].onclick = function() { 
 
     return false; 
 
    }; 
 
    } 
 
}
<a href="k"> 
 
    <div id="foo"> 
 
    <select> 
 
     <option value="a">Stuff</option> 
 
     <option value="b">More stuff</option> 
 
    </select> 
 
    </div> 
 
</a> 
 

 
<a href="">Test Link</a>

+0

Да, но в конечном счете нужно что-то сказать. Я бы хотел, чтобы щелчок по выпадающему окну вообще не вызывал якорь :) –

+0

@LennartKloppenburg Извините. Я обновил свой ответ другим методом, чтобы сохранить ссылку. – DontMindMe

+0

Мне нравится это решение лучше всего. Благодаря! –

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