Jquery: странное поведение - PullRequest
       19

Jquery: странное поведение

0 голосов
/ 14 марта 2011
$(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 возвращает значения ... Что не так?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 14 марта 2011

jQuery: В чем разница между '$ (this)' и 'this'? это может вам помочь.извините за каламбур: P

0 голосов
/ 14 марта 2011

jquery всегда возвращает массив объектов jquery.Вы, вероятно, хотите это:

$(this)[0].files;
0 голосов
/ 14 марта 2011

Вы должны передать значение $(this) в отдельные функции

, например:

mais_telefones($('div'));

и в функции mais_telefones:

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