JQuery передавая идентификатор управления во внутренний метод - PullRequest
1 голос
/ 01 сентября 2010

Я выполняю вызов ajax (ASP.NET 3.5) из обработчика изменений выпадающего списка и пытаюсь передать идентификатор раскрывающегося списка в вызов ajax:

$('select.facility').change(function()
{
      if ($(this).val() != 0)
      {
            var params = new Object();
            params.facilityId = $(this).val();

            $.ajax(
                {
                    type: "POST",
                    data: $.toJSON(params),
                    dataType: "json",
                    contentType: "application/json",
                    url: "SomeURL.asmx/SomeMethod",
                    success: function(response)
                    {
                        //this is where I need to get a hold of my dropdown,
                        // $(this) obviously doesn't work, using just to illustrate  
                        $(this).closest('table').next('table')
                        .find('input.address').val(response.d.Address);

                    }  

      }
});

Есть ли какой-нибудь элегантный способ сделать это?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

Вы можете использовать this, вам просто нужно добавить context вариант $.ajax(), поэтому this полезно:

$('select.facility').change(function() {   
   if ($(this).val() == 0) return;
   var params = { facilityId = $(this).val() };
   $.ajax({
      context: this,                           //add this!
      type: "POST",
      data: $.toJSON(params),
      dataType: "json",
      contentType: "application/json",
      url: "SomeURL.asmx/SomeMethod",
      success: function(response) {
        $(this).closest('table').next('table')
               .find('input.address').val(response.d.Address);
      }  
   });
});
1 голос
/ 01 сентября 2010
...
var parentContext = $(this);
$.ajax(
{
    type: "POST",
    data: $.toJSON(params),
    dataType: "json",
    contentType: "application/json",
    url: "SomeURL.asmx/SomeMethod",
    success: function(response)
    {
        //this is where I need to get a hold of my dropdown,
        // $(this) obviously doesn't work, using just to illustrate  
        parentContext.closest('table').next('table')
        .find('input.address').val(response.d.Address);

    }  
    ...
0 голосов
/ 01 сентября 2010

Если вы не настаиваете на использовании AJAX, вы можете просто установить для свойства AutoPostback раскрывающегося списка значение true и обработать измененное событие в коде позади.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...