2010-09-30 4 views
0

Итак, у меня есть некоторые пользовательские переключатели, которые я создал с помощью js и некоторых css, теперь я хочу, когда я нажимаю на настраиваемую кнопку, чтобы установить переключатель с нажатой кнопкой, как отмечено, и порядок неконтролируемый, поэтому в то время это должна быть только одна радиопередача. Вот что я пытался сделать, но не работает.JQuery и радиокнопки

$('.custom-checkbox li span, .bg-check').live('click', function(){ 


    $(this).parent().find('span').each(function(){ 

     $(this).addClass('checked').find('input:radio').attr('checked',''); 

    });  

    $(this).addClass('checked').find('input:radio').attr('checked','checked'); 



    return false; 
}); 

Некоторые из них, пожалуйста, помогите мне, я действительно этого не понимаю.

// LE

function customCheckBox() 
{ 
$('.custom-checkbox li').find('input:radio').hide().wrap('<span />'); 

$('.custom-checkbox li span, .bg-check').live('click', function(){ 


    $(this).parent().find('span').each(function(){ 

     $(this).removeClass('checked').find('input:radio').attr('checked',false); 

    });  

    $(this).addClass('checked').find('input:radio').attr('checked',true); 

    return false; 
}); 

} 

Вот как это работает, я считаю, все входы радио, и я оберните их с <span> и <span> элемент имеет некоторые CSS стиль ... собственное изображение.

код HTML

    <ul class="custom-checkbox clearfix"> 
        <li><input type="radio" name="ext" id="a" value=".ro"/><label for="a">.ro</label></li> 
        <li><input type="radio" name="ext" id="b" value=".com"/><label for="b">.com</label></li> 
        <li><input type="radio" name="ext" id="c" value=".net"/><label for="c">.net</label></li> 
        <li><input type="radio" name="ext" id="d" value=".org"/><label for="d">.org</label></li> 
        <li><input type="radio" name="ext" id="e" value=".info"/><label for="e">.info</label></li> 
        <li><input type="radio" name="ext" id="f" value=".biz"/><label for="f">.biz</label></li> 
        <li><input type="radio" name="ext" id="g" value=".us"/><label for="g">.us</label></li> 
        <li><input type="radio" name="ext" id="h" value=".eu"/><label for="h">.eu</label></li> 
        <li><input type="radio" name="ext" id="i" value=".mobi"/><label for="i">.mobi</label></li> 
        <li><input type="radio" name="ext" id="j" value=".name"/><label for="j">.name</label></li> 
       </ul> 
+0

Проводка сгенерированного HTML, а также помогло бы. –

+0

Почему вы используете сгенерированный 'span' для пользовательского css, когда вы можете просто применить класс/стиль к родительскому' li' кнопки-переключателя? –

+0

Вот как я это сделал ... но да, будет лучше делать то, что вы упомянули, но я больше не хочу менять стили. Я просто хочу сделать это сейчас ... – Uffo

ответ

2

В JQuery, атрибуты «проверил» и «выбрали» устанавливаются с значения истинным и ложным.

Предполагая, что с вашим кодом нет другой основной проблемы, которая должна исправить это. Если он по-прежнему не работает, вам нужно дать немного больше контекста, т. Е. Разметки и, возможно, поддержки кода.

Для первого выстрела, вы бы настроить свой код так:

$('.custom-checkbox li span, .bg-check').live('click', function(){ 
    $(this) 
    .closest('.custom-checkbox') 
     .find('span') 
     .removeClass('checked') 
     .end() 
    .end() 
    .addClass('checked') 
     .find('input:radio') 
     .attr('checked',true) 
     .end(); 
}); 
+0

Прежде всего в каждом цикле он должен быть $ (this) .removeClass ... srry typo. Я отредактирую сообщение с more..hang на – Uffo

+0

Все еще не работает, я могу выбрать несколько переключателей одновременно http://screencast.com/t/NjY5YTQ1Yz – Uffo

+0

Вы были на одном уровне слишком низко, чтобы выполнить свой сброс петля. Я отредактировал свой ответ, чтобы отразить это. – Thomas

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