2016-09-22 143 views
0

我有點卡住了我的一些單選按鈕。Jquery單選按鈕問題

如果我刪除標籤下面的代碼工作絕對沒問題 - 問題是我需要的標籤,在那裏,在確切地點,他們都在

基本上我有一個單選按鈕列表我試圖運行一個函數,循環它們中的每一個,將它們設置爲一個接一個地檢查。

當用戶單擊單選按鈕時應停止整個序列。正如我提到的沒有標籤,它工作正常,而此刻它檢查第一個,然後3然後循環這兩個之間只。

我希望這是有道理的,有人可以指出我在正確的方向。

乾杯

的jsfiddle - https://jsfiddle.net/imchris/9dow1mep/

HTML -

<label for="test-1">label</label> 
<input id="test-2" type="radio" name="testing" class="toggle"/> 
<label for="test-2">label</label> 
<input id="test-3" type="radio" name="testing" class="toggle"/> 
<label for="test-3">label</label> 
<input id="test-4" type="radio" name="testing" class="toggle"/> 
<label for="test-4">label</label> 
<input id="test-5" type="radio" name="testing" class="toggle"/> 
<label for="test-5">label</label> 
<input id="test-6" type="radio" name="testing" class="toggle"/> 
<label for="test-6">label</label> 

JS -

startCycle(); 
var intervalID; 

function startCycle() { 
    intervalID = setInterval(function(){ 
    $('input').eq(($('input:checked').index() + 1) % 6).prop('checked', true); 
    },500); 
} 

function stopCycle(){ 
    clearInterval(intervalID); 
} 

$('.toggle').click(function(e){ 
    stopCycle(); 
}) 

乾杯

回答

2

index功能會給你與之相關的當前對象的地方的容器。由於您的容器同時包含label元素和input元素,因此當前的input:checked位置在您的代碼中是「錯誤的」。

你可以做的是讓相關選中輸入的指數只有輸入:

$('input').index($('input:checked')) 

檢查這個例子:

startCycle(); 
 
var intervalID; 
 

 
    function startCycle() { 
 
     intervalID = setInterval(function(){ 
 
     $('input').eq(( $('input').index($('input:checked')) + 1) % 6).prop('checked', true); 
 
     },500); 
 
    } 
 

 
    function stopCycle(){ 
 
     clearInterval(intervalID); 
 
    } 
 

 
$('.toggle').click(function(e){ 
 
    stopCycle(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="test-1">label</label> 
 
<input id="test-2" type="radio" name="testing" class="toggle"/> 
 
<label for="test-2">label</label> 
 
<input id="test-3" type="radio" name="testing" class="toggle"/> 
 
<label for="test-3">label</label> 
 
<input id="test-4" type="radio" name="testing" class="toggle"/> 
 
<label for="test-4">label</label> 
 
<input id="test-5" type="radio" name="testing" class="toggle"/> 
 
<label for="test-5">label</label> 
 
<input id="test-6" type="radio" name="testing" class="toggle"/> 
 
<label for="test-6">label</label>

0

添加量w獸人。這是你需要的嗎?

startCycle(); 
var intervalID; 
i=0; 
    function startCycle() { 
     intervalID = setInterval(function(){ 
     /* $('input').eq(($('input:checked').index() + 1) % 6).prop('checked', true);*/ 

      $('input').eq(i % 6).prop('checked', true); 
      i++ 
     },500); 
    } 

    function stopCycle(){ 
     clearInterval(intervalID);i=0; 
    } 

$('.toggle').click(function(e){ 
    stopCycle(); 
}) 

https://jsfiddle.net/9dow1mep/5/