2013-04-12 1 views
1

У меня есть два идентичных события в одном документе, но работает только один, другой неактивен. Этот код показывает тот же идентификатор, который был глупым недосмотром, я использовал разные идентификаторы, но безрезультатно.

Как я могу использовать $ (this) для воздействия на оба события?

Вот мой код.

<fieldset class="clear"> 
    <div class="auth_98"> 
     <legend>Is this a conference?</legend> 
     <input class="authradio" type="radio" name="conf" id="confyes" value="yes"> 
     <label>Yes</label> 
     <input class="authradio" type="radio" name="conf" value="no" checked="checked"> 
     <label>No</label> 
     <!-- begin Conference Toggle --> 
     <script> 
      $(document).ready(function() { 
       $('.hideme').hide() 
       $('.authradio').change(function() { 
        var $stat = $('#confyes')[0].checked; 
        if ($stat == true) $('.hideme').slideDown(); 
        else $('.hideme').slideUp(); 
       }); 
      }); 
     </script> 
     <!-- end Conference Toggle --> 
     <!-- hidden conference section --> 
     <div class="hideme"> 
      <div class="auth_50"> 
       <legend>Conference Role</legend> 
       <input class="authradio" type="radio" name="conference" value="Atendee" checked="checked"> 
       <label>Attendee</label> 
       <input class="authradio" type="radio" name="conference" value="Presenter"> 
       <label>Presenter</label> 
       <input class="authradio" type="radio" name="conference" value="invitedspeaker"> 
       <label>Invited Speaker</label> 
      </div> 
      <div class="auth_50"> 
       <label> 
        <legend>Conference Website</legend> 
       </label> 
       <input class="authurl" type="url" placeholder="www.amazingsciencestuff.com"> 
      </div> 
     </div> 
    </div> 
</fieldset> 
+1

Когда вы говорите, что этот код дважды ... Вы имеете в виду весь дубликат, в том числе идентификаторов? – tymeJV

ответ

1

У вас не должно быть двух элементов с одинаковым идентификатором, поэтому, если вы пытаетесь применить этот код к двум экземплярам одного и того же html, селектор $('#confyes') найдет только первый экземпляр этого идентификатора.

Вы можете использовать селектор классов на .authradio, а затем перейдите к dom, чтобы найти соответствующий .hideme div, чтобы показать. Я предполагаю, что вы хотите что-то вроде этого

$('.authradio').change(function() { 
    if ($(this).val() == 'yes') 
     $(this).parent().find('.hideme').slideDown(); 
    else 
     $(this).parent().find('.hideme').slideUp(); 
}); 

FIDDLE

+0

Спасибо. $ (это) сделал трюк. Я не уверен, что полностью его понимаю, но мне нравится $ (это). – RenHue

+0

$ ('. Authradio') - это селектор классов, поэтому он выберет все элементы с классом = "authradio". Если у вас есть 2 элемента, которые имеют этот класс, этот код подключит функцию к событию изменения для каждого из них. Если либо изменено, функция будет выполнена, а $ (this) относится к элементу, который был изменен. Надеюсь, это имеет смысл. –

0

Проблема в том, что код имеет вход с идентификатором (confyes). Если есть более одного экземпляра этого кода, то есть более одного экземпляра этого идентификатора, что недопустимо. Каждому экземпляру нужен уникальный идентификатор.

Селектор jQuery всегда будет действовать только в первом экземпляре идентификатора при использовании селектора ID, например $ ('# confyes'). Может быть, первым будет confyes_98, а второй будет confyes_99. Или, может быть, вы можете использовать классы вместо идентификаторов.

+0

Я сделал уникальные идентификаторы, и результат был вторым, но первый из них откроется после изменения - сразу же закрывается снова. Казалось, что это твердое решение, но что-то было неудобно. Я даже пытался дать им разнородные имена с подобной лаконичностью. – RenHue