我正在尝试进行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
答案 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知识有点生疏。
有关您的代码的一些建议:
答案 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);