JQuery выбрать "изменить" событие не сработало - PullRequest
4 голосов
/ 19 августа 2010

У меня есть три в зависимости от выбора.Во-первых, есть некоторые значения.

<select id="first">
<option value="1">v1</option>
<option value="2">v2</option>
</select>

Второе и третье пустые:

<select id="second"></select>
<select id="third"></select>

Я хочу заполнить пустые выборки с помощью запросов ajaxВот я и делаю:

jQuery('body').delegate('#first','change',function(){
jQuery.ajax(
{
'type':'GET',
'data':{'changed':$('#first').val()},
'url':'myURL1',
'cache':false,
'success':function(html){jQuery("#second").html(html)}});
return false;
});

Так что все отлично работает.Второй выбор заполнен, но ... событие «изменение» не запускается для выбора «второй».Чтобы получить это событие, я написал:

   $(document).ready(function()
    {
        $('#second').live("change", function()
        {
            alert('test');
        });
    });

Но оповещение «тест» не видно.Как перехватить это событие «change» для динамически загружаемого контента для второго выбора?

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

попробуйте это:

$('#second').change(function(){
    alert('Test')
})
2 голосов
/ 19 августа 2010

Поскольку элемент #second просто существует, не нужно использовать делегат и действующие функции

$('#first').change(function(){ 
  $.ajax( 
  { 
    'type':'GET', 
    'data':{'changed':$('#first').val()}, 
    'url':'myURL1', 
    'cache':false, 
    'success':function(html){
      $("#second").html(html);
     }
   }); 
   return false; 
});

$('#second').live("change", function()   
{   
  alert('test');   
}); 

если вы хотите сделать предупреждение сразу после заполнения второго выбора, то включите его в функцию обратного вызова $ .ajax ()

$('#first').change(function(){ 
  $.ajax( 
  { 
    'type':'GET', 
    'data':{'changed':$('#first').val()}, 
    'url':'myURL1', 
    'cache':false, 
    'success':function(html){
      $("#second").html(html);
      $("#second").change();
     }
   }); 
   return false; 
});
1 голос
/ 19 августа 2010

Какую версию jQuery вы используете? Все, что было до 1.4.x, не поддерживало live события для change.

.

Вот API для него http://api.jquery.com/live/

Вы можете увидеть в предостережениях:

В jQuery 1.3.x только следующее События JavaScript (в дополнение к пользовательские события) могут быть связаны с .live (): нажмите, dblclick, keydown, нажатие клавиши, keyup, mousedown, перемещение мыши, mouseout, mouseover и mouseup.

0 голосов
/ 23 октября 2013

Насколько JQuery обновляет свою версию с JQuery 1.7, ее введение "on" см. Здесь http://api.jquery.com/on/.Так что, если вы будете использовать следующий способ, это определенно вызовет событие «Изменить».

 $(document).ready(function()
{
    $('#second').on("change", function()
    {
        alert('test');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...