Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   оказать скрытые элементы с определенным классом (https://javascript.ru/forum/jquery/59231-okazat-skrytye-ehlementy-s-opredelennym-klassom.html)

rodiony4 02.11.2015 02:28

оказать скрытые элементы с определенным классом
 
Всем привет
радиокнопкой с id r1 показываются скрытые элементы с классом field
if ($('[id="r1"]:checked').val()) {
  $(".field").slideDown(500);
}

как можно перечислить id радиокнопок, по которым будут показываться скрытые элементы с классом field
так не получается
if ($('[id="r1", id="r2"]:checked').val()) {

рони 02.11.2015 02:37

rodiony4,
может html сделать для примера?

rodiony4 02.11.2015 03:02

рони,
<input type="radio" name="name_of_button" value=1 id="r1">скрываем div1, div2, div3<br>
<input type="radio" name="name_of_button" value=2 id="r2">скрываем div1, div2<br>
<input type="radio" name="name_of_button" value=3 id="r3"><br>
<input type="radio" name="name_of_button" value=4 id="r4"><br>
<div id="div1" class="field">div1</div>
<div id="div2" class="field">div2</div>
<div id="div3" class="field">div3</div>
<div id="div4" class="field">div4</div>
<div id="div5" class="field">div5</div>

<script type="text/javascript">
$("input").click(function(){
   if ($('input[id="r1"]:checked').val()) {
     $("#div1, #div2, #div3").slideUp(500);
   }
   if ($('input[id="r2"]:checked').val()) {
     $("#div1, #div2").slideUp(500);
     $("#div3").slideDown(500);
   }
  if ($('input[id="r3, id="r4"]:checked').val()) {// ?????
     $(".field").slideDown(500);
  }
});
</script>

рони 02.11.2015 03:11

Открывашка 232
 
rodiony4,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       var s = $('[name="name_of_button"]');
       s.click(function() {
          $(".field").not($({r1 : "#div1, #div2, #div3", r2 : "#div1, #div2"}[this.id]).slideUp(500)).slideDown(500);   
      });
});


  </script>
</head>

<body>
<input type="radio" name="name_of_button" value=1 id="r1">скрываем div1, div2, div3<br>
<input type="radio" name="name_of_button" value=2 id="r2">скрываем div1, div2<br>
<input type="radio" name="name_of_button" value=3 id="r3"><br>
<input type="radio" name="name_of_button" value=4 id="r4"><br>
<div id="div1" class="field">div1</div>
<div id="div2" class="field">div2</div>
<div id="div3" class="field">div3</div>
<div id="div4" class="field">div4</div>
<div id="div5" class="field">div5</div>



</body>

</html>

rodiony4 02.11.2015 03:29

рони, спасибо, работает, но первый раз по клику (r1 или r2) дивы скрываются, а после второго раза - сначала открываются все дивы, а потом уже скрываются нужные

рони 02.11.2015 07:28

rodiony4,
изменил смотрите снова

rodiony4 02.11.2015 16:51

рони, да, теперь все супер, спасибо!
Но еще одна проблема - на сайте дивы начинают скрываться только со второго раза (нажал одну радиокнопку - дивы не скрываются, нажал другую радиокнопку - дивы скрылись, далее все стабильно)
дело в том, что ваш код размещен в другой функции, вот как все выглядит на сайте:
function changeTextOnePage3(op_textinclship, op_currency, op_ordertotal)
{
op_hidePayments();
changeTextOnePage(op_textinclship, op_currency, op_ordertotal);

var jQnoC6 = jQuery.noConflict();
var s = jQnoC6('[name="shipping_rate_id"]');
s.click(function() {
  jQnoC6(".formField, .formLabel").not(jQnoC6({hashd5561dda4545a69195256a8ee62fcc91 : "#vm_myadres_div, #vm_myadres_input, #vm_pasport_div, #vm_pasport_input, #infoTK", hasha917f3643fcc7141bc83f55fb83a6c62 : "#vm_pasport_div, #vm_pasport_input, #infoTK"}[this.id]).slideUp(500)).slideDown(500);   
});
}

скорей всего мешает функция
s.click(function() {

заменял ее на
jQnoC6("input").click(function(){

но все равно - дивы начинают скрываться со второго раза
могу дать ссылку на страницу сайта

рони 02.11.2015 18:56

rodiony4,
а какой смысл ставить код в функцию changeTextOnePage3 ?

пока не сработает эта функция кликать бесполезно
если функция срабатывает несколько раз -- она просто убивает код -- каждый второй раз.

рони 02.11.2015 19:15

rodiony4,
заменить в коде выше 4 пост все $ на jQuery и добавить свои идентификаторы и ставьте в любое место.

rodiony4 02.11.2015 20:00

Цитата:

Сообщение от рони (Сообщение 394200)
rodiony4,
заменить в коде выше 4 пост все $ на jQuery и добавить свои идентификаторы и ставьте в любое место.

попробовал, не работает
Цитата:

Сообщение от рони (Сообщение 394196)
rodiony4,
а какой смысл ставить код в функцию changeTextOnePage3 ?

если ставить код вне этой функции - ничего работать не будет (пробовал, и не один я)
код, который я привел в начале темы, в этой функции работает
function changeTextOnePage3(op_textinclship, op_currency, op_ordertotal)
{
op_hidePayments();
changeTextOnePage(op_textinclship, op_currency, op_ordertotal);

var jQnoC6 = jQuery.noConflict();
	if (jQnoC6("input:checked").val() == "1") {
		jQnoC6("#vm_myadres_div, #vm_myadres_input, #vm_pasport_div, #vm_pasport_input, #infoTK").slideUp(500);
	}
	if (jQnoC6("input:checked").val() == "2") {
		jQnoC6("#vm_pasport_div, #vm_pasport_input, #infoTK").slideUp(500);
		jQnoC6("#vm_myadres_div, #vm_myadres_input").slideDown(500);
	}
	if (jQnoC6("input:checked").val() == "3") {
		jQnoC6(".formField, .formLabel").slideDown(500);
    }
}

если его обернуть функцией - не работает
$("input").click(function(){
......
});

но ваш код проще и короче, может можно его подшаманить, чтобы он корректно работал? Например, как то обойтись без click(function() {


Часовой пояс GMT +3, время: 09:28.