Danh mục

Thứ Sáu, 3 tháng 9, 2010

jQuery và hàm each

each là vòng lặp mà jQuery cung cấp sẵn cho ta, cách thức hàm each hoạt động tương tự như vòng lặp foreach trong C#.
  • each( function() ) vòng lặp chạy tuần tự từ object đầu mảng tới object cuối mảng.
  • each( function(index) ) vòng lặp chạy tuần tự từ object đầu mảng tới object cuối mảng, có kèm theo biến thứ tự (index).

Lưu ý:

  • each lả một vòng lặp foreach được viết bằng jQuery.
  • Để truy xuất đối tượng đang được hàm each truy xuất tới ta dùng từ khóa this, cách dùng như sau jQuery(this)

Cú pháp:

Ví dụ với hàm each( function() ) ta có thẻ ul có ba thẻ con li, dùng hàm each hiện alert có nội dung là nội dung của thẻ li đang được truy xuất tới.

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#butEach1").click(function(){
jQuery("#ul_1 li").each(function(){
alert("Đang truy xuất tới phần tử có nội dung: " + jQuery(this).html());
});
});
});
</script>
<div>
<div style="float:left;border:1px color gray;background-color:#EAEAEA;padding-right:20px;">
<ul id="ul_1">
<li>Dòng 1</li>
<li>Dòng 2</li>
<li>Dòng 3</li>
</ul>
</div>
<div style="float:left;padding-left:20px;"><input type="button" value="Each" id="butEach1"/></div>
<div style="clear:both;"></div>
</div>

Demo

  • Dòng 1
  • Dòng 2
  • Dòng 3

Ví dụ với hàm each(function(index)) ta cũng có một thẻ ul với ba thẻ li con khi nhấn vào button Each thì ta dùng hàm each để gắn giá trị index vào từng thẻ ul con.

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#butEach2").click(function(){
jQuery("#ul_2 li").each(function(index){
jQuery(this).html(jQuery(this).html()+" "+index);
});
});
});
</script>
<div>
<div style="float:left;border:1px color gray;background-color:#EAEAEA;padding-right:20px;">
<ul id="ul_2">
<li>Dòng</li>
<li>Dòng</li>
<li>Dòng</li>
</ul>
</div>
<div style="float:left;padding-left:20px;"><input type="button" value="Each" id="butEach2"/></div>
<div style="clear:both;"></div>
</div>

Demo

  • Dòng
  • Dòng
  • Dòng

Mình xin đính chính lại là each không chỉ hoạt động với mảng jQuery object mà còn có thể hoạt động với mảng thông thường trong javascript

Cách thức sử dụng:

jQuery.each(array, callback function(index, value))

Giả sử ta có mảng gồm 10 phần tử bất kỳ, ta dùng hàm each duyệt qua từng phần tử.

Code

<script type="text/javascript">
jQuery(document).ready(function(){
var arr = [1,2,3,40,1,20,3,50];
jQuery("#arr_each_1").click(function(){
jQuery.each(arr, function(index,value){
alert("STT " + index + ": Gia tri "+value);
});
});
});
</script>
<input type="button" value="contains method" id="arr_each_1"/>

Demo

16 nhận xét:

  1. cảm ơn !
    Ví dụ rất dễ hiểu !!

    Trả lờiXóa
  2. Dùng for loop của java script chạy nhanh hơn each() jquery này Bạn ơi.

    Trả lờiXóa
    Trả lời
    1. Ngùơi ta đang nói hàm each thì biết hà each đi, lắm chuyện

      Xóa
    2. nếu nhanh thì bạn có thể trình bày ra đây để mọi người cùng tham khảo...

      Xóa
    3. thằng ấy bị rảnh ấy mà

      Xóa
    4. Người ta cũng chỉ nêu ý kiến thôi mà. Sao mọi người phải căng thẳng vậy chứ?

      Xóa
    5. nhanh hơn thì bố bảo nhanh hơn, ý kiến cái buồi. táng bỏ mẹ chúng mày giờ

      Xóa
    6. Sao mày biết nhanh hơn hả thằng kia, dẫn chứng ra,nhiều chuyện táng bỏ bú bi giờ

      Xóa
  3. dễ hiểu đây!!! cảm ơn bạn nhen

    Trả lờiXóa
  4. hình như sẽ giống foreach nếu async = false

    Trả lờiXóa
  5. cảm ơn tác giả rất nhiều. Thực sự rất bổ ích

    Trả lờiXóa