2017-01-06 90 views
1

遇到麻煩檢查length$.each()功能如何檢查長度

假設我有2 elements這樣每個函數內部,

<div class="demo"> 
    <!-- 30 -- with different class> 
    <input type="text" name="demo" class="hell"/> 
    <input type="text" name="demo2" class="seeHere"/> 
</div> 
$('.demo').find('input').each(function(){ 
    var $this = $(this); 
    if($this.find('.seeHere').length>0){ // throws error length of undifined 
    // do something 
    }else{ 
    // do something 
    } 
}); 

它拋出錯誤長度對於如果

至於第一次它將chache

<input type="text" name="demo" 
     class="hell"/> 

,有沒有辦法在jQuery的每個功能,$返回false內if(el.length>0 || return false) like el.push(value || 'No value')

請幫我在此先感謝

+0

要在'if'檢查什麼聲明?我想你需要檢查'類'不是那裏的長度。 – vijayP

+0

所示的代碼(不考慮缺少關閉的HTML註釋)不會拋出關於「未定義的長度」的錯誤 - 您已經刪除了太多真實代碼或其他東西......並且沒有發生「chache」操作 –

+1

您的代碼不應該拋出提到的錯誤,但是'$ this.find('。seeHere')'將永遠是一個長度爲0的jquery對象。 –

回答

2

使用hasClass jQuery的

$('.demo').find('input').each(function(){ 
var $this = $(this); 
    if($this.hasClass('seeHere')){ 
    // do something 
    }else{ 
    // do something 
    } 
}); 

(這)類似於指數

我的意思是說

假設你有這樣的事情

<div id="#a" class="abc"> 
<div id="#b" class="abc"> 
<div id="#c" class="abc"> 

所以,當你遍歷「名爲.abc」像

$(".abc").each(function() { 
     //Here $(this) resembles to $("#a") at first iteration 
     // $("#b") at second iteration 
     // $("#c") at third iteration 
}); 
1

你並不需要遍歷什麼 - 使用所需的選擇器和.length屬性來獲取具有該類的元素的數量。

$(document).ready(function(){ 
 
var len = $('.seeHere').length; 
 
    console.log(len); 
 
//displays 2 in the console since there are two divs with the desired class 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="a" class="hell"> 
 
<div id="b" class="seeHere"> 
 
<div id="c" class="something"> 
 
<div id="d" class="seeHere">

,如果你想somethimg發生到具有一流的每一個元素 - 使用。每()方法上的選擇:

$(document).ready(function(){ 
    $('.seeHere').each(function(){ 
     //do stuff 
     }); 
    });