代码之家  ›  专栏  ›  技术社区  ›  Mike

在jquery中,如何在不基于事件的情况下监视动态填充元素(ajax)?

  •  3
  • Mike  · 技术社区  · 15 年前

    我在页面加载时有以下标记:

    <select name="sel_billing_address"></select>
    

    在页面加载之后,选择被一些Ajax填充,使其成为以下行的内容:

    <select name="sel_billing_address">
      <option value="1">hi</option>
      <option value="2">there</option>
      <option value="3" selected="selected">sally</option>
    </select>
    

    我需要从这个列表中获取所选的选项。通常,这只是一个简单的例子:

    jQuery('select[name=sel_billing_address] option:selected');
    

    但是因为它是动态加载的,所以我需要使用.live()或者其他方法来监视它。如果我使用live(“更改”)来监视它,那么它会很好地工作——但是当选择框可能没有更改时,我需要这些值。

    .live(“加载”)似乎是一个显而易见的选择,但这只在加载元素时有效-select元素本身在页面加载时加载,此时它为空。我也尝试过在选项上执行.live(“加载”),而不是选择,但似乎也不可用。

    同样值得注意的是,我无法更改标记、页面如何加载元素,也无法插入最初更改select的脚本的回调参数-所有内容都是外部的。

    非常感谢您的帮助。

    2 回复  |  直到 15 年前
        1
  •  2
  •   lomaxx    15 年前
        2
  •  1
  •   please delete me    15 年前

    (Global) Ajax Events

    // Use the Global Ajax Event "ajaxComplete"
    $('select[name=sel_billing_address]').bind('ajaxComplete', function () {
        // Check to see if select has any option elements yet
        if ($(this).find('option').length > 0) {
            // Unbind the ajax event
            $(this).unbind('ajaxComplete');
    
            // Do your stuff
            // Here...
        }
    });