2014-07-03 204 views
-1

我正在做一些測試 - http://magora-systems-test.esy.es/,並且其中一項任務使得單選按鈕通過JavaScript(jQuery)進行靜態化。我一次又一次地重新構造構造,但始終存在一個問題:通過單擊樣式化克隆,JS成功地將輸入單選按鈕屬性設置爲checked =「checked」,但它確實沒有被設置爲選擇,並且所需的屬性talkink相同。我不明白爲什麼?單選按鈕未設置爲選中

HTML:

<fieldset class="userAge"> 
     <div class="fieldName"> 
      Возраст: 
     </div> 
     <div class="overflow"> 
      <input type="radio" name="userAge" id="seventeen" title="Выберите если вы младше 17" required> 
      <label for="seventeen">17 и младше</label> 
      <input type="radio" name="userAge" id="eighteen" title="Выберите если вы старше 18" required> 
      <label for="eighteen">18 и старше</label> 
     </div> 
</fieldset> 

JS:

;(function($) { 
    // Расширяем набор элементов jQuery новым плагином. 
    $.fn.sexyElement = function() { 

     // Запуск для всех инициализаций на странице. 
     $(this).each(function() { 
      var element = $(this); 

      // RADIO 
      else if (element.is(':radio')) { 

       // Для всех существующих радио кнопок. 
       element.each(function() { 

         // Создание и обработка радио кнопок. 
         var createRadio = function(){ 
          var sexyRadio = '<div class="radio" title="' + element.attr('title') + '">\ 
               <div class="dot">\ 
               </div>\ 
              </div>'; 
          element.before(sexyRadio); 
         } 

         // Запуск функции. 
         createRadio(); 
       }); 

       // Определяем основные элементы. 
       var commonParent = element.parents().eq(0), 
        buttons = commonParent.find(':radio'); 

       // Обработка щелчка мыши. 
       $('.radio').click(function() { 
        $(this).addClass('checked').siblings().removeClass('checked'); 
        buttons.attr('checked', false); 
        $(this).next(':radio').attr('checked', true); 
        buttons.change(); 
       }); 
      } 
      // END RADIO 

      // В противном случае. 
      else { 
       alert('Пожайлуста убедитесь, что выбранный вами элемент является select или radio'); 
       return false; 
      } 
     }); 
    } 
})(jQuery); 

啓動插件:

$(document).ready(function() { 
    $(':radio').sexyElement(); 
}); 

PS:對不起一些TITL關於俄語。標籤JS代碼還沒有寫入。

+0

你好,每個單選按鈕有兩個單選按鈕,一個是藍色,另一個是灰色。預計會發生什麼? –

+0

checked =「checked」工作正常。問題 –

+0

_期望值是什麼?_ - 是的,這是預期的。這是爲了測試。稍後它將被css隱藏。 – user3688243

回答

0

我真的不知道爲什麼,但這個bug是通過將輸入單選按鈕放到他的標籤上解決的。

前:

<fieldset class="userAge"> 
     <div class="fieldName"> 
      Возраст: 
     </div> 
     <div class="overflow"> 
      <input type="radio" name="userAge" id="seventeen" title="Выберите если вы младше 17" required> 
      <label for="seventeen">17 и младше</label> 
      <input type="radio" name="userAge" id="eighteen" title="Выберите если вы старше 18" required> 
      <label for="eighteen">18 и старше</label> 
     </div> 
</fieldset> 

後:

<fieldset class="userAge"> 
    <div class="fieldName"> 
     Возраст: 
    </div> 
    <div class="overflow"> 
     <label for="seventeen"> 
      <input type="radio" name="userAge" id="seventeen" title="Выберите если вы младше 17" required> 
      17 и младше 
     </label> 
     <label for="eighteen"> 
      <input type="radio" name="userAge" id="eighteen" title="Выберите если вы старше 18" required> 
      18 и старше 
     </label> 
    </div> 
</fieldset> 

反正任何想法,爲什麼?