Por que meu seletor JQuery está retornando um n.fn.init [0] e o que é?

Eu tenho um conjunto de caixas de seleção geradas dinamicamente, em que cada uma delas tem umdata-id atributo correspondente a um ID inteiro do banco de dados. Quando eu preencho meu formulário html com um objeto para editar, há uma lista de números inteiros representando quais caixas de seleção devem ser verificadas. As caixas de seleção são agrupadas em umdiv com classecheckbox-wrapper.

Então, o html se parece com isso:

<div class="checkbox-wrapper">
    <input type="checkbox" id="checkbox1" data-id="1">
    <label for="checkbox1">Checkbox 1</label>
</div>
<div class="checkbox-wrapper">
    <input type="checkbox" id="checkbox2" data-id="2">
    <label for="checkbox2">Checkbox 2</label>
</div>
<div class="checkbox-wrapper">
    <input type="checkbox" id="checkbox3" data-id="99">
    <label for="checkbox3">Checkbox 99</label>
</div>

Observe que o ID é executado em números de índice de incremento automático, enquanto o ID de dados pode ter um valor de ID diferente. Eu quero selecioná-los por ID de dados.

Agora, usando JQuery, sei que posso selecionar as caixas de seleção relevantes como esta:

$(".checkbox-wrapper>input[data-id='99']");
$(".checkbox-wrapper>input[data-id='1']");

Isso funciona no meu console, no chrome, e retorna o elemento DOM relevante. Da mesma forma, isso abaixo, define as caixas de seleção para marcadas:

$(".checkbox-wrapper>input[data-id='99']").prop("checked", "checked");
$(".checkbox-wrapper>input[data-id='1']").prop("checked", "checked");

No entanto, se eu percorrer uma lista de números inteiros no meu código javascript (não diretamente no console) e registrar os elementos retornados, com base nos valores de id, obtive alguns resultados estranhos:

var ids = [1,2]
$.each(ids, function(index, myID){
    console.log($(".checkbox-wrapper>input[data-id='"+myID+"']"));
    $(".checkbox-wrapper>input[data-id='"+myID+"']").prop("checked", "checked");    
}); 

Primeiro de tudo, nenhuma caixa de seleção está marcada. Segundo, meu console imprime resultados estranhos:

n.fn.init[0]
    context: document
    length: 0
    prevObject: n.fn.init[1]
    selector: ".checkbox-wrapper>input[data-id='1']"
    __proto__: n[0]

n.fn.init[0]
    context: document
    length: 0
    prevObject: n.fn.init[1]
    selector: ".checkbox-wrapper>input[data-id='2']"
    __proto__: n[0]

O seletor impresso Strings parece perfeito. Os mesmos seletores exatamente retornam os elementos DOM, quando gravados diretamente no console do chrome. Em seguida, eles retornam objetos como este:

[<input type=​"checkbox" id=​"checkbox1" data-id=​"1">​]

O que é o n.fn.init [0] e por que ele é retornado? Por que minhas duas funções JQuery aparentemente idênticas estão retornando coisas diferentes?

questionAnswers(6)

yourAnswerToTheQuestion