javascript - 为什么我不能使用 jquery 访问 ajax 提取的内容

标签 javascript jquery ajax forms wordpress

<分区>

Possible Duplicate:
Use variable outside the success function from an ajax/jquery call

我有这段代码,但我不明白为什么 html 元素的访问只在 ajax 成功函数中起作用。表单是从 ajax 中提取的,但只有当我将所有元素的选择都放在 ajax 函数中时,我才能访问它。

console.log('submit clicked'); not 以这种方式触发,但在“ajax 成功”中它确实触发了,我认为一切都与ajax 是 DOM 的一部分?

jQuery(document).ready(function($) {

console.log('ready');

$.ajax({
    type: 'GET',
    url: 'admin-ajax.php',
    data: { action: 'get_arve_form' },
    success: function(response){
        // var table = $(response).find('table');
        $(response).appendTo('body').hide();
        console.log('response');

                    [ if i move the code below this ajax function in here its workign fine why not outside of it?]

    }
});

// handles the click event of the submit button
$('#mygallery-submit').click(function(){
    console.log('submit clicked');
                [...]
        });

最佳答案

Ajax 是异步的,因此您的元素在 ajax 调用完成之前不存在。

话虽如此,有两种方法可以修复它:

1) 将您的代码移至成功处理程序

2) 使用事件委托(delegate)将您的事件处理程序绑定(bind)到所有当前和 future 元素。

#2 的示例:

$(document).on('click', '#mygallery-submit', function(){
    console.log('submit clicked');
});

查看 jQFundamentals了解有关事件委托(delegate)的更多信息。

关于javascript - 为什么我不能使用 jquery 访问 ajax 提取的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589980/

相关文章:

javascript - 如何删除 contenteditable 元素的所有子元素?

javascript - 使用对象将 javascript 变量传递给 php

php - 使用 php/ajax/mysql 将记录添加到数据库中的最佳方法?

javascript - 列表颜色比例

javascript - Angular 2 和组件树

javascript - 无法使用 jQuery 长度找出现有元素

jQuery 导航到选择选项中的页面

javascript - 如果 OpenLayers 3 中关闭 div,则删除 'singleclick' map 事件

ajax - 减少从 AJAX/JSON 服务收集数据的技术

javascript - 让 var 根据 if 语句返回特定值