2013-10-24 56 views
0

我想檢查這些無線電盒子是否被選中,如果是,取消選中它並檢查下一行。jquery循環在第二個元素後停止

我想每4秒重複一次這個過程。

<section class="cr-container"> 
<input id="select-img-1" name="radio-set-1" type="radio" class="cr-selector-img-1 radio-set" checked/> 
<input id="select-img-2" name="radio-set-1" type="radio" class="cr-selector-img-2 radio-set" /> 
<input id="select-img-3" name="radio-set-1" type="radio" class="cr-selector-img-3 radio-set" /> 
<input id="select-img-4" name="radio-set-1" type="radio" class="cr-selector-img-4 radio-set" /> 
</section> 

我想是這樣的,但它不工作

$(".cr-container input").each(function(){ 
    setTimeout(function() { 
     requestFunction(data, function(status){ 
      if (status == 'OK') { 
       if ($(this).attr('checked')) { 
        $(this).next().prop('checked', true); 
       } 
      } 
     }); 
    }, indexInArray * 400); 
}); 
+1

可能涉及的範圍的問題。你在一個函數內的函數中有一個函數。你期望'this'指什麼?你可以設置一個jsfiddle進行測試,請 –

+2

(indexInArray * 400)不是4秒。 –

+0

什麼是請求函數?一些Ajax電話? – PSL

回答

0

讓我知道,如果這是你要找的人:

這裏是的jsfiddlehttp://jsfiddle.net/BTuaS/

setInterval(repeatProcess, 4000); 

function repeatProcess() { 
    $(".cr-container input").first().prop('checked', true); 
    $(".cr-container input").each(function(i){ 
     var self = $(this); 
     setTimeout(function() { 
      requestFunction("", function(status){ 
       if (status == 'OK') { 
        if (self.prop('checked')) { 
         self.next().prop('checked', true); 
        } 
       } 
      }); 
     }, (i + 1) * 1000); 
    }); 
} 

function requestFunction(data, status){ 
    status('OK'); 
} 
+0

是的,非常感謝你,<3,今晚你救了我:) – Amin

+0

樂意幫忙。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。謝謝:) –

+0

感謝您的幫助 – Amin

1

正如指出的@b_dubb,問題是在兩個回調後範圍,因爲$(這)不再是你想要的元素。

嘗試類似的東西:

$(".cr-container input").each(function(){ 
    self = this 
    setTimeout(function() { 
     requestFunction(data, function(status){ 
      if (status == 'OK') { 
       if ($(self).attr('checked')) { 
        $(self).prop('checked', false); //You wanted to uncheck current element, didn't you? 
        $(self).next().prop('checked', true); 
       } 
      } 
     }); 
    }, indexInArray * 400); 
}); 

關於4秒間隔,indexInArray * 400不會做你想做的。你想每4秒鐘檢查一次所有元素嗎?你想每4秒檢查一個元素嗎?

BTW一個的console.log($(本))可能會幫你

編輯

由於elementcs是單選按鈕而不是複選框有沒有必要取消目前的元素,這樣你就可以容易忽略行:

$(self).prop('checked', false); //You wanted to uncheck current element, didn't you? 

只有當要素是複選框,這將是需要的(多選允許)

相關問題