2011-10-13 51 views
3

我有以下的HTML ...jQuery的 - div的

<div class="display">sometext</div> 
<div class="display">sometext</div> 
<div class="display">sometext</div> 

使用jQuery我希望能夠點擊第一div的顯示出現次數和警告會顯示說你已經點擊了第一div等等。我知道如何計算具有特定班級的div的數量,但不知道如何確定哪一個被點擊。

回答

5

我不知道關於 '第一' 正因爲如此,但你可以嘗試:

$('.display').click(
    function(){ 
     alert("You clicked div number: " + ($(this).index('.display') + 1) + ", of " + $('.display').length); 
    }); 

JS Fiddle

參考文獻:

+0

Ahhh .index,我想這就是我要找的。 –

+1

很高興幫助過! =) –

+0

@Interstellar_Coder:恩,它以何種方式變得複雜? –

7

在幕後,.index()也遍歷所有以前的元素。當元素有許多同胞時,以下替代方法比.index()更有效。

$(".display").each(function(i){ 
    $(this).click(function(){ 
     alert("Clicked div.display, number " + i); 
    } 
}); 
+0

很好的使用封閉。實際上,內部jQuery使用'inArray'函數來檢查瀏覽器是否有indexOf,如果它使用'indexOf.call(...)'來返回索引,如果不是則返回yes。 –

0

爲什麼使用jQuery?你可以編寫一個由div觸發的簡單javascript。

+2

也許OP已經將jQuery用於頁面中的其他內容,並且通常使用jQuery將使您的代碼更短。 – Nettogrof

1

這是一個簡單的方法。

$divs = $('.display'); 
$divs.click(function(){ 
    alert($divs.index($(this))); 
}) 

Fiddle要去用它。

1

答案很簡單和行之有效的this jsfiddle

var containers = jQuery('.display'); 
containers.bind('click', function(event){ 
    alert('Clicked element no. ' + (containers.index(this)+1)); 
}); 

請讓我知道,如果它幫助。

1

你可以這樣做:

HTML

<div class="display" name="1">sometext</div> 
<div class="display" name="2">sometext</div> 
<div class="display" name="3">sometext</div> 

的JavaScript

$('.display').click(function(){ 
    alert($(this).attr('name')); 
}); 

演示http://jsfiddle.net/SzwJU/