我想在一个类中定位一些div,我会使用$(this),但这并不起作用,因为我从另一个函数调用该类。
示例代码。
$(document).on('click', '.Player', function(e){
var id = $(this).find('.Song_Id').html();
$.ajax({
type:"POST",
data: {data:id},
complete: function(){
$(this).attr('src', '../images/appicons/2/16x16/refresh - Red.png')
},
url:"php/player/get_song.php"
}).done(function(f){
$('#Song_info').html(f)
});
})
从上面,以下是我不知道如何表达的界限。
$(this).attr('src', '../images/appicons/2/16x16/refresh - Red.png'),
它假设目标类为“.player”,但不是整个类,只是被点击的元素。
感谢。
答案 0 :(得分:2)
您可以将$(this)
存储在另一个变量中,并在您的函数中使用此变量。
$(document).on('click', '.Player', function (e) {
var id = $(this).find('.Song_Id').html(),
that = $(this);
$.ajax({
type: "POST",
data: {
data: id
},
complete: function () {
that.attr('src', '../images/appicons/2/16x16/refresh - Red.png')
},
url: "php/player/get_song.php"
}).done(function (f) {
$('#Song_info').html(f)
});
})
答案 1 :(得分:1)
执行ajax回调时,默认情况下,回调方法的执行上下文设置为ajax设置对象。
您可以使用$.ajax()的上下文选项来传递自定义执行上下文
$(document).on('click', '.Player', function (e) {
var id = $(this).find('.Song_Id').html();
$.ajax({
type: "POST",
data: {
data: id
},
//use context to set the execution context of the callback
context: this,
complete: function () {
$(this).attr('src', '../images/appicons/2/16x16/refresh - Red.png')
},
url: "php/player/get_song.php"
}).done(function (f) {
$('#Song_info').html(f)
});
})
此对象将成为所有与Ajax相关的回调的上下文。通过 默认情况下,上下文是表示ajax设置的对象 在调用中使用($ .ajaxSettings与传递给的设置合并 $阿贾克斯)。例如,将DOM元素指定为上下文将 将其作为请求完整回调的上下文