在AJAX帖子之后通过jQuery修改内容

时间:2011-10-19 01:44:56

标签: javascript jquery wordpress

我正在尝试使用jQuery来修改从AJAX中传来的一些内容,但由于某些原因它似乎无法访问内容。我仍然是jQuery的新手,所以我不确定它到底出了什么问题,希望有人能指出我正确的方向。

所有代码都位于GitHub https://github.com/Ryan-Myers/WordPress-Survey-Plugin/blob/master/survey-js.php

但相关代码如下(这是wordpress插件btw的一部分):

//Add a new question to the passed survey
function add_question(survey_id) {
    var data = {
        action: 'survey_add_question_ajax',
        security: '<?php echo wp_create_nonce("survey_add_question_nonce"); ?>',
        survey: survey_id
    };

    jQuery.post(ajaxurl, data, function(response) {
        jQuery('#survey-admin-page').html(response);
        jQuery('#survey-questions-table').slideUp();
        jQuery('#survey-add-question').slideDown();
    });

    //FAILS HERE
    jQuery('#survey-add-question').ready(function(){
        //Default to hiding the question setup until they select a question type.
        jQuery('#questionsetup').hide();
        jQuery('#save_question').attr('onclick', 'submit_question('+survey_id+')');

        //Testing to see if it will return a usable value, which it doesn't.
        alert(jQuery('#save_question').attr('onclick'));
    });
}

2 个答案:

答案 0 :(得分:2)

$ .ready不能那样:http://api.jquery.com/ready/

  

.ready()方法只能在与当前文档匹配的jQuery对象上调用,因此可以省略选择器。

您通常使用它来了解DOM何时就绪,然后开始执行依赖于DOM的代码。

您可以在slideDown之后添加对$ .post回调无效的代码块,也可以在slideDown完成后添加回调给slideDown:{{3} }

答案 1 :(得分:0)

#save_question是否动态加载?这就是你使用jQuery('#survey-add-question').ready()。

的原因

例如

$('#save_question').live("click", function() {
   submit_question(survey_id);
});

如果是这样,您可能需要查看jQuery.live

如果您只是想在运行代码之前等待帖子到fininsh,请将您的代码放在jQuery.post函数中

jQuery.post(ajaxurl, data, function(response) {
       // code in here will be called once the response is returned from AJAX

    });