2015-09-11 4 views
0

сообщество!Показать/скрыть информацию наClick

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

Проблема:
Как сделать этот список закрытым только при нажатии кнопки, а не когда пользователь нажимает на любой элемент внутри списка или где-либо на экране.

Fiddle:jsfiddle.net/H2Chj/494/

HTML:

<button data-text-swap="Show" id="trigger">Hide</button>  
<div id="drop"> 
<a href="#">Menu item 1</a> 
    <a href="#">Menu item 2</a> 
    <a href="#">Menu item 3</a> 
    <a href="#">Menu item 4</a> 
</div> 

Javascript

$(document).ready(function(){ 

$('#trigger').click(function(event){ 

    event.stopPropagation(); 

    $('#drop').toggle(); 

}); 

$(document).click(function(){ 

    $('#drop').hide(); 

}); 

$("button").on("click", function() { 

    var el = $(this); 

    if (el.text() == el.data("text-swap")) { 

     el.text(el.data("text-original"));} 
    else { 

     el.data("text-original", el.text()); 

     el.text(el.data("text-swap"));} 
}); 

}); 
+3

тогда почему вы добавите '$ (документ) .click' слушателем, который делает' $ ('# падение') скрыть() '? – wiesion

+0

Его рода дублировали это ... Я пробовал, и он отлично работает - http://jsfiddle.net/H2Chj/505/ http://stackoverflow.com/questions/1403615/use-jquery-to-hide- a-div-when-the-user-clicks-outside-of-it Редактирование: о, только что увидели вторую часть ... да ... присоединяюсь к вопросу выше меня ... если вы не хотите, чтобы это закрыть любой щелчок, удалить событие щелчка документа ... –

ответ

0

Единственное, чего вам не хватало, это прекратить распространение, когда вы нажимаете ссылку в раскрывающемся списке. это останавливает его от барботажа до обработчика события $ (document) .click.

$('#drop a').click(function(e){ e.stopPropagation(); }); 

Я предполагаю, что вы имели $ (документ) .click обработчик там, чтобы вы могли закрыть выпадающий список, щелкнув вне выпадающего меню.

увидеть эту скрипку:. http://jsfiddle.net/o0m8p4bf/2/

+0

Спасибо, Грегг. Это работает отлично! – Bohdan

0

Пожалуйста, используйте этот код яваскрипта:

$(document).ready(function(){ 

$("button").on("click", function() { 


    $('#drop').toggle(); 

    var el = $(this); 

    if (el.text() == el.data("text-swap")) { 

     el.text(el.data("text-original"));} 
    else { 

     el.data("text-original", el.text()); 

     el.text(el.data("text-swap"));} 
}); 

}); 
+0

Спасибо, Атиф. Ваша версия также отлично работает! – Bohdan

+0

Добро пожаловать Богдан. –

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