Нужен класс возвращаемого элемента родительской функции - PullRequest
0 голосов
/ 21 октября 2009

Немного нового в jQuery, так что извините за попытку правильно идентифицировать вещи.

Мне нужно, чтобы идентификатор элемента отражался в селекторе, который является парой функций, и я не совсем уверен, как это сделать.

$("input[type='file'][id^='pic_']").change(       //I need this element's id...
    function()
    {
        $("."+this.id).hide("fast",
            function()
            {
                //..to be reflected in this class selector
                $("."+this.id).attr("checked", true);
            }
        );
    }
);

Спасибо за вашу помощь заранее. : -)

Ответы [ 3 ]

1 голос
/ 21 октября 2009

При этом используются замыкания для переноса переменной с идентификатором в область самой внутренней функции.

$("input[type='file'][id^='pic_']").change(       //I need this element's id...
        function()
        {
                var fileSelector = "." + this.id;
                $(fileSelector).hide("fast",
                        function()
                        {
                                //..to be reflected in this class selector
                                $(fileSelector).attr("checked", true);
                        }
                );
        }
);
0 голосов
/ 21 октября 2009

Переменная this в обратном вызове события является элементом DOM, в котором находится событие. В обратном вызове функции change этот элемент изменился. Поэтому:

$("input[type='file'][id^='pic_']").change(
  function() {
    $(this).hide("fast",
      function() {
        $(this).attr("checked", true);
      }
    }
  }
}
0 голосов
/ 21 октября 2009

Похоже, вопрос переменной области:

$("#my_input").change(function() {
    var my_id = $(this).attr('id');
    $(this).hide('fast', function() {
        alert(my_id); // Will show an alert with the id from above.
        alert($(this).attr('id')); // *Should* show an alert with the same id.
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...