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

Javascript 在jQuery中,如何在不基于事件的情况下监视动态填充的元素(AJAX)?,javascript,ajax,jquery,Javascript,Ajax,Jquery,我在页面加载时有以下标记: <select name="sel_billing_address"></select> 但是因为它是动态加载的,所以我需要使用.live()或其他方法来监视它。如果我使用live('change')监视它,那么它工作得很好——但是我需要在选择框可能没有更改时使用这些值 .live('load')似乎是一个明显的选择,但这只在加载元素时起作用-select元素本身在页面加载时加载,此时它是空的。我也尝试过在选项而不是SELECT上使用.liv

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

<select name="sel_billing_address"></select>
但是因为它是动态加载的,所以我需要使用.live()或其他方法来监视它。如果我使用live('change')监视它,那么它工作得很好——但是我需要在选择框可能没有更改时使用这些值

.live('load')似乎是一个明显的选择,但这只在加载元素时起作用-select元素本身在页面加载时加载,此时它是空的。我也尝试过在选项而不是SELECT上使用.live('load'),但这似乎也不可用

还值得注意的是,我不能更改标记、页面加载元素的方式,也不能插入最初更改select的脚本的回调参数——所有内容都是外部的

非常感谢您的帮助。

请查看。它的工作方式与.live()方法相同,但与live不同,它不仅限于绑定到您可以查看的事件。这可能为您提供了一种方法,可以潜入您无法直接访问的ajax回调

// 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...
    }
});
如果您查看我链接到的jquery页面,您可以看到“ajaxComplete”出现在任何“complete”之后


编辑:是的。。。这仍在使用事件,但我认为它将解决您的问题。

您不能在ajax函数的回调(success:)函数中执行此操作吗?不幸的是,不能。我忘了提到这一点。我无法访问页面上已经存在的任何代码,包括标记或已经加载的任何脚本。这在任何意义上都是一个插件。@loxaxx,谢谢!我和询问者有同样的问题,
livequery
非常棒。链接不再有效,livequery到github回购的直接链接在这里:
jQuery('select[name=sel_billing_address] option:selected');
// 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...
    }
});