2013-06-06 3 views
0

Я хотел выбрать радиокнопку rad1, когда я нажимаю на флип-div и так же кнопку rad2, когда я нажимаю на flip2 div. Вот код jquery, который я использовал. проблема в том, что этот код работает для первого события кликов, но если продолжить, то переключатель не будет выбран. Что не так с кодом?Использование переключателя jquery при нажатии контейнера div

HTML: -

<div id="flip" style="width:600px;"> 
     <input type="radio" name="rad1" value="stat" id="exprad"> 
     <label for="exprad" >Experience</label><br> 
</div> 
<div id="flip2" style="width:600px;> 
     <input type="radio" name="rad2" value="fin-maths" id="perrad"> 
    <label for="perrad">Personal</label><br> 
</div> 

Jquery: -

<script > 
$(document).ready(function(){ 
    $("#flip").click(function(){//when click on flip radio button 
     $('input:radio[name=rad1]:nth(0)').attr('checked',true); 
     $('input:radio[name=rad2]').attr('checked',false); 
     }); 
    }); 
}); 

$(document).ready(function(){ 
    $("#flip2").click(function(){ 

     $('input:radio[name=rad2]:nth(1)').attr('checked',true);//select radio button second 
     $('input:radio[name=rad1]').attr('checked',false);//deselect radioi button first 


     }); 
    }); 
}); 
</script> 

Отредактированный код

<script > 
    $(document).ready(function(){ 
     $("#flip").click(function(){//when click on flip radio button 
      $('input:radio[name=rad1]:nth(0)').attr('checked',true); 
      $('input:radio[name=rad2]').attr('checked',false); 
      }); 
     }); 

    $(document).ready(function(){ 
     $("#flip2").click(function(){ 

      $('input:radio[name=rad2]:nth(1)').attr('checked',true);//select radio button second 
      $('input:radio[name=rad1]').attr('checked',false);//deselect radioi button first 

     }); 
    }); 
    </script> 
+0

почему два document.ready ??? – Roopendra

+0

для чего вам нужно: nth() 'selector? –

+0

Если вы хотите установить флажок, используйте флажки. В противном случае просто удалите javascript, щелкнув метку, проверит переключатель. – adeneo

ответ

1

Используйте один document.ready и избавиться от nth. Также используйте prop(). У вас также есть два дополнительных });, которые вызывают ошибку.

jsfiddle

$(document).ready(function() { 
    $("#flip").click(function() { //when click on flip radio button 
     $('input:radio[name=rad1]').prop('checked', true); 
     $('input:radio[name=rad2]').prop('checked', false); 
    }); 

    $("#flip2").click(function() { 
     $('input:radio[name=rad2]').prop('checked', true); //select radio button second 
     $('input:radio[name=rad1]').prop('checked', false); //deselect radioi button first 
    }); 
}); 

Нет Javascript опция

<label for="exprad" style="width:600px;"> 
     <input type="radio" name="rad1" value="stat" id="exprad"> 
     Experience<br/> 
</label> 
<label for="perrad"style="width:600px;> 
    <input type="radio" name="rad2" value="fin-maths" id="perrad"> 
    Personal<br/> 
</label> 
+0

Спасибо, метод поддержки работал отлично. Я новичок в jquery, и я использую следующий учебник http://www.mkyong.com/jquery/how-to-select-a-radio-button-with-jquery/. Я думаю, что n-я функция работает неправильно. В любом случае, еще раз спасибо, чтобы сэкономить время, просить использовать одну готовую функцию. – wordpressm

+1

Есть только одна проблема с этим, она создает функциональность, которая уже присутствует в HTML без необходимости использования JavaScript? – adeneo

+0

ok, но моя ширина тега div составляет около 600 пикселей. Мне нужно выбрать радиокнопку не только, когда я нажимаю их или их ярлыки, но где угодно на теге div. – wordpressm

0

Сделать обе кнопки радио имеют одинаковое название. Должно решить вашу проблему. И тогда вам также не нужен jQuery.

<div id="flip" style="width:600px;"><input type="radio" name="rad1" value="stat" id="exprad"> <label for="exprad" >Experience</label><br></div> 
<div id="flip2" style="width:600px;><input type="radio" name="rad1" value="fin-maths" id="perrad"><label for="perrad">Personal</label><br></div> 
+0

Под «именем» вы имеете в виду «ID»? И если вы имели в виду идентификатор, вы имели в виду предложить, чтобы OP изменил их на классы, потому что невозможно присвоить два идентификатора одинаковым? – dKen

+1

Зачем использовать код в комментарии, а не в ответе. – Gabe

+0

Ваш ответ говорит «divs». Вы имели в виду «радиовходы»? Кроме того, не могли бы вы объяснить, как OP может сделать это без jQuery? – dKen

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