Jquery:奇怪的行为

问题描述 投票:0回答:3
$(document).ready(function()
{
    mais_telefones();
    upload_imagens();
});

function mais_telefones()
{
    mais_telefones.click(function(event)
    {
        var label = input = button = null,
            labels = $('.telefones'),
            tamanho = labels.length;

        event.preventDefault();

        if (tamanho < 3)
        {
            label = $('<label for="elemento' + tamanho +
                '" class="telefones elemento' +
                tamanho + '">Telefone</label>');

            input = $('<input id="elemento' + tamanho +
                '" class="elemento' +
                tamanho + '"type="text" name="telefones[]" />');

            button = $('<button class="elemento' + tamanho + '">X</button>');

            button.click(function(event)
            {
                event.preventDefault();
                $('.elemento' + tamanho).remove();
            });

            label.insertBefore($(this));
            input.insertBefore($(this));
            button.insertBefore($(this));
        }
    });
}

function upload_imagens()
{
    var imagem = $('#imagem');
    imagem.change(function(event)
    {
        alert($(this).files);
    });
}

mais_telefones函数中,我可以使用$(this),附加元素(appendChild),insertBefore等。但是在第二个函数中,我不能。 $(this).files返回未定义,但this.files返回值...怎么了?

jquery callback this element jquery-events
3个回答
0
投票

您必须将$(this)传递给各个功能

例如:

mais_telefones($('div'));

以及在mais_telefones函数中:

function mais_telefones(sel){
     this = sel.get(0);
     ...
}

0
投票

jquery始终返回jquery对象的数组。您可能想要这样:

$(this)[0].files;

0
投票

jQuery: What's the difference between '$(this)' and 'this'?这可能会对您有所帮助。请问双关语:P

© www.soinside.com 2019 - 2024. All rights reserved.