Ajax jQuery,初学者问题

Ajax jQuery,初学者问题,jquery,ajax,Jquery,Ajax,我正在尝试进行一个ajax调用,以获取会话数据,以便在像这样加载页面后插入到页面中 jQuery(function(){ // Add Answer jQuery(".add_answer").livequery('click',function(){ var count = $(this).attr("alt"); count++; var count1 = count-1; $.get('quiz/select', function(p_type){

我正在尝试进行一个ajax调用,以获取会话数据,以便在像这样加载页面后插入到页面中

jQuery(function(){ // Add Answer

  jQuery(".add_answer").livequery('click',function(){
    var count = $(this).attr("alt");
    count++;
    var count1 = count-1;

    $.get('quiz/select', function(p_type){  // Ajax Call for Select Data

      $(this).parents('div:first').find('.a_type_'+count1+'').after('' + p_type + '');
      $(this).attr("alt", count);

    });
  });
});
我调用的文件已找到,但其内容未通过“p_type”打印出来 和
$(this).attr(“alt”,count)部分函数未执行


注意:我的框架使用CodeIgniter,js使用jquery,我相信您的问题与$的范围有关(这个)。因为您已经在livequery函数中嵌套了ajax get函数,在另一个匿名函数中,我敢打赌$(这)现在是指您的$.get()调用或其他什么

您需要在您知道已选择正确对象的位置尽快缓存$(this):

jQuery(".add_answer").livequery('click',function()
{
    var add_answer = $(this);

    $.get(...)
    {
        add_answer.parents('div:first')...
    }
}
上面的代码应该缓存add_answer元素,但我的livequery知识有点生疏

关于代码的一些建议:

  • 与jQuery()或$()快捷方式的使用保持一致,它们做的事情是相同的
  • 围绕整个代码段的匿名函数是什么?这只是一个简单的例子吗?它可能应该替换为$(document).ready(函数{…})
      “this”是Javascript中的一个特殊关键字。 在外部函数中,它指的是.add_answer元素。 在你的内在功能中,它指的是窗口

      jQuery(".add_answer").livequery('click',function(){
        var self = this;
        // ...
        $.get('quiz/select', function(p_type){
          // ...
          $(self).attr("alt", count);
      

      使用$(function(){…})相当于$(document).ready(function{…});你说得对。我总是发现$(document).ready()的意图更加清晰。