これは、ajax呼び出しを行うために使用しているコードです
対象の要素にアクセスする方法があるかどうか知りたいです。クリックのイベント ハンドラーの外部で関数ハンドラーを定義しているため、宣言された要素ターゲットが機能しない可能性があります。
ターゲットへのアクセス方法
function handleFavorite(data) {
if (data.status) {
var notification = noty({
text: "Successfully added to favorite",
type: "success"
});
} else {
var notification = noty({
text: data.error,
type: "error"
});
}
target.toggleClass("btn-danger").toggleClass("add").toggleClass("delete");
}
function toggleFavorite() {
var href = $(this).attr("href");
var target = $(this);
$.get(href, handleFavorite, "json");
return false;
}
$(".favorite").click(toggleFavorite);
これについてもう少し考えた後、これが最善の方法だと思います:要素をパラメーターとして受け入れる関数によってハンドラー関数を返すには:
function createHandler($element){
var target=$element;
return function(data){
if (data.status) {
var notification = noty({
text: "Successfully added to favorite",
type: "success"
});
} else {
var notification = noty({
text: data.error,
type: "error"
});
}
target.toggleClass("btn-danger").toggleClass("add").toggleClass("delete");
}
}
//And in the ajax call
function toggleFavorite() {
var href = $(this).attr("href");
var target = $(this);
$.get(href, createHandler($(this)), "json");
return false;
}
$(".favorite").click(toggleFavorite);