2010-04-14 3 views
1

У меня есть страница со следующими два дивой:Jquery Событие OnChange для Div

<div id="searchResults"> 
</div> 

<div class="postSearchOptions" style="display: none;"> 
</div> 

Есть ли способ, что я могу сделать «postSearchOptions» деление с появляется, когда ДИВ «SearchResults» обновляется с помощью AJAX вызов? Я не контролирую вызовы AJAX, и я хочу обнаружить любые изменения в div «searchResults».

Я пытался писать следующий JQuery код, но потом понял, что это требует Jquery 1,4 и у меня есть только 1.3:

$("#searchResults").live("change", function() { 
    $(".postSearchOptions").css("display", "inline"); 
}); 

Есть ли способ, чтобы поймать событие из SearchResults Див меняется с использованием либо стандартного JavaScript или JQuery 1.3? Благодаря!

+0

Можете ли вы перейти на jQuery 1.4? – SLaks

+0

@SLaks, что в 1.4, что бы сделать что-то вроде огня событие, когда DOM обновляется? Единственное, что я знаю об этом, это LiveQuery. – Pointy

+0

@Pointy: Ничего; Я неправильно понимаю вопрос. Тем не менее, он должен все же перейти на 1,4; это быстрее. – SLaks

ответ

0

Я не думаю, что событие onchange будет срабатывать, если вы программно меняете innerHTML. Почему бы вам просто не показать параметры поиска по почте после получения этих изменений, то почему вы не включили его в качестве последней строки в свой метод успеха ajax.

НТН

+0

Ну, методы AJAX разделены по всему веб-сайту и написаны в DOJO 0.4, поэтому я надеялся избежать необходимости их менять. Я посмотрю на них и посмотрю, есть ли простой способ реализовать это в вызове AJAX. Тем не менее, я предпочел бы, если возможно, jquery-решение. – David

1

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

0

Вы можете использовать setInterval, чтобы посмотреть его, но, как говорили другие, было бы лучше обнаружить изменение в обратном вызове ajax. Вот эскиз, что плагин будет выглядеть, чтобы «смотреть» узел, как вы пытаетесь сделать с живым:

jQuery.fn.watch = function() { 
    this.each(function() { 
    var original = $(this).html(); 
    setInterval(function() { 
     var newHtml = $(this).html(); 
     if (newHtml != original) { 
     $(this).trigger('change'); 
     original = newHtml; 
     } 

    }, 500); 

    }); 
} 
-1

работать, делать ....

jQuery.fn.watch = function() { 
     this.each(function() { 
     var obj = $(this); 
     var original = $(this).html(); 
     setInterval(function() { 
      var newHtml = $(obj).html(); 
      if (newHtml != original) { 
      $(obj).trigger('change'); 
      original = newHtml; 
      } 

     }, 500); 

     }); 
} 
Смежные вопросы