2016-12-09 3 views
-1

Я работаю над небольшим приложением Ruby on Rails, и я пытаюсь добавить кнопку hide/show, которая скрывает div с некоторым Id. Я выполнил шаги от this, и он скрывает контент (второй ответ). Проблема в том, что контент не скрывается постоянно. Как только я нажимаю кнопку, содержимое исчезает, тогда браузер делает что-то вроде автоматического обновления, и содержимое появляется снова.HTML JavaScript hide/show button

Может ли кто-нибудь помочь мне с этим? Это мое первое приложение, и мой фон в JavaScript довольно беден ...

Кусок кода, который я хочу, чтобы скрыть/показать следующий:

<div id='test'> 
    <div class="col_4 patients-list"> 
    <!-- Patients list --> 
    <h5>Patients en cours: <%= @patients.size %></h5> 
    <div> 
     <% @patients_anomaly.each do |patient| %> 
     <div class="patient-anomaly"><%= link_to_patient patient %></div> 
     <% end %> 
     <% (@patients_to_exit - @patients_anomaly).each do |patient| %> 
     <div class="patient-to-exit"><%= link_to_patient patient %></div> 
     <% end %> 
     <% @patients_normal.each do |patient| %> 
     <div class="patient-normal"><%= link_to_patient patient %></div> 
     <% end %> 
    </div> 
    </div> 
</div> 
<button>Click</button> 

и Javascript кнопки является:

<script type="text/javascript"> 
    $("button").click(function() { 
    $("#test").toggle('hide'); 
    }); 
</script> 

Заранее спасибо.

+2

Пожалуйста, покажите свой код. – Mairaj

+0

Нужно также видеть, что вы код. Так plis добавить его! –

+0

@ Leopard извините, прямо сейчас добавлен. –

ответ

2

Вы можете установить type="button" в button потому что поведение по умолчанию submit которые submits страницу, чтобы страница отображается в default state.

<button type="button">Click</button> 
+0

Это работает отлично! Большое спасибо! : D –

2

Я вижу, что вы отметили jQuery, вы попробовали $('#element').hide() и $('#element').show()?

Documentation for show, Documentation for hide

+0

он использует 'toggle()', который должен делать трюк – Fallenhero

+0

Не нужно 'show'' hide' toggle делает все в порядке. – Mairaj

1

Вместо этого <button>Click</button>, добавьте

= link_to 'Hide', 'javascript:void(0);', id: 'hideContent' 

Тогда в Javascript

$('#hideContent').on('click', function(){ 
    $('#test').toggle('hide'); 
}); 

Это не будет перезагрузить страницу.

Надеюсь, что это поможет!

+0

Я бы не делал '' javascript: void (0); '' just '''' и в JS 'preventDefault()' – Fallenhero

+0

Да, мы можем делать 'e.preventDefault()' тоже, я предпочитаю это , – RSB

+0

да, это работает, но снова «ненавязчивый JavaScript» – Fallenhero

-1
<div id='test'></div> 
<button id="hide_show">Click</button> 
<script> 
    $('#hide_show"').click(function(){ 
    $('#test').toggle(); 
    }); 
</script> 
+2

Пожалуйста, используйте ссылку [edit], объясните, как работает этот код и не просто передайте код, так как объяснение, скорее всего, поможет будущим читателям. –

+0

Хотя этот фрагмент кода может решить проблему, он не объясняет, почему и как он отвечает на вопрос. Пожалуйста, [укажите объяснение своего кода] (// meta.stackexchange.com/q/114762/269535), так как это действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. ** Флагеры/рецензенты: ** [Для ответов только на код, таких как этот, нисходящий, не удалять!] (// meta.stackoverflow.com/a/260413/2747593) –