What is the difference between $.each(selector) and $(selector).each()

What is the difference between this:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());

and this:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });

The html for the table cell that is being selected and acted upon looks like this:

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>

I've gone over the jQuery documentation, but I still don't understand the difference. (Is it me or is that documentation sometimes slightly "nebulous" in clarity of content?)

Added Info:

Apparently my attempt a generic examples is confusing people! Along with the (previously) missing parenthesis in the first example. :(

The first example comes from a line in my code that removes the <tbody> for any rows with a checkbox that is checked:

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());

The second example comes from a situation where I look through the #classesTable for any checked checkboxes and remove its matching item in a dropdown.

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});

I understand that they do two different things, but not to the point that I'd be able to say "I need to use $.each() in this case and .each(function() {}) in another case.

Are they interchangeable at all? Only in some cases? Never?


Description:

.each is an iterator that is used to iterate over only jQuery objects collection while jQuery.each ( $.each ) is a general function for iterating over javascript objects and arrays.

Examples:

Javascript Array ( or js object ) using $.each():

var myArray = [10,20,30];

jQuery.each( myArray, function(index, value) {
   console.log('element at index ' + index + ' is ' + value);
});

//Output
element at index 0 is 10
element at index 1 is 20
element at index 2 is 30

jQuery objects using .each()

$('#dv').children().each(function(index, element) {
    console.log('element at index ' + index + 'is ' + (this.tagName));
    console.log('current element as dom object:' + element);
    console.log('current element as jQuery object:' + $(this));
});

//Output
element at index 0 is input
element at index 1 is p
element at index 2 is span

If you are seeking further examples+details, $.each vs .each()

Resources

  • jQuery.each ( $.each ) doc: https://api.jquery.com/jquery.each/
  • .each doc: http://api.jquery.com/each/
  • jQuery to loop through elements with the same class

  • from http://api.jquery.com/jQuery.each:

    The $.each() function is not the same as .each(), which is used to iterate, exclusively, over a jQuery object. The $.each() function can be used to iterate over any collection, whether it is a map (JavaScript object) or an array.


    You want to really use $.each with an array that isn't elements or something. ie:

    var x = ["test", "test2"];
    

    You'd use $.each(x... to traverse that instead of x.each :)

    .each is for elements only :)

    链接地址: http://www.djcxy.com/p/83508.html

    上一篇: 从具有相同类的所有元素中获取文本

    下一篇: $ .each(selector)和$(selector).each()之间的区别是什么?