Ajax jQuery,初学者问题

时间:2008-12-28 03:25:50

标签: 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 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作为框架,jquery作为js

2 个答案:

答案 0 :(得分:3)

我相信你的问题与$(this)的范围有关。因为你的ajax get函数嵌套在你的livequery函数中,在另一个匿名函数里面,我愿意打赌$(this)现在引用你的$ .get()调用或其他东西。

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

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

    $.get(...)
    {
        add_answer.parents('div:first')...
    }
}

上面的代码应该缓存add_answer元素,但我的livequery知识有点生疏。

有关您的代码的一些建议:

  • 与jQuery()或$()快捷方式的使用一致,它们做同样的事情。
  • 围绕整个片段的匿名函数是什么?这只是一个简化的例子吗?它可能应该用$(document).ready(function {...});
  • 替换

答案 1 :(得分:0)

“this”是Javascript中的特殊关键字。 在你的外部函数中它指的是.add_answer元素。 在你的内部函数中它指的是窗口。

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