[英]Why doesn't my event fire the first time?
$(document).ready(function () {
$('.raj').click(function () {
if (!$(this).hasClass('already')) {
$('.infos').html('');
$('.infos').hide("fast");
$.ajax({
type: "POST",
dataType: "json",
url: "ggg/hhh/rrr.php",
success: function (msg) {
$('.infos').html(msg['ats']);
arr = msg['valid'];
}
});
$('.infos').show("slow");
if (arr == 1) {
$(this).css("cursor", "default");
$(this).addClass('already');
$(this).animate({
opacity: 0.1
}, 1000);
}
}
})
})
當我單擊類別為raj
的元素(它是圖像)時,什么也沒有發生。 只有第二次單擊,我的事件才會觸發。 為什么會這樣呢?
編輯:這部分已完成:
if(arr == 1)
{
$(this).css("cursor", "default");
$(this).addClass('already');
$(this).animate({
opacity: 0.1
}, 1000);
}
但是msg['valid']
實際上始終為1,因此我不明白。
我想知道是不是應該這樣?
$(document).ready(function() {
$('.raj').click(function(){
var thisObj = $(this);
if(!$(this).hasClass('already'))
{
$('.infos').html('');
$('.infos').hide("fast");
$.ajax({
type: "POST",
dataType: "json",
url: "ggg/hhh/rrr.php",
success: function(msg) {
$('.infos').html(msg['ats']);
arr = msg['valid'];
$('.infos').show("slow");
if(arr == 1) {
thisObj.css("cursor", "default");
thisObj.addClass('already');
thisObj.animate({
opacity: 0.1
}, 1000);
}
}
});
}
})
})
似乎由於某種原因很難讀入縮進,所以放錯了位置。
編輯:
附加信息:ajax調用是異步的。 這意味着arr不會第一次設置為1,而是第二次是因為回調已經被觸發(我對此的唯一解釋)
嘗試在ajax回調(成功函數)中運行if(arr == 1)語句
您知道您的“ arr”是在post函數中設置的,並且在您測試后執行。
您的ajax請求不是同步的,您僅配置要執行ajax請求的瀏覽器,但是您不知道何時執行。
這就是為什么它第二次起作用的原因,因為此后執行了ajax請求。
$('.infos').show("slow");
在Ajax請求發送之后,但在收到響應之前 ,因此在成功函數運行之前,將繼續運行。
這意味着不會第一次設置arr
,而只會第二次設置arr
,因為您已將其設為全局。
響應從服務器返回的數據而發生的所有事情,都發生在成功函數內部 ,不要忘了使用var
關鍵字將變量保持在本地。
您應該在AJAX請求的'success'屬性中添加f-cked部分。 另一方面,arr第一次等於0。
var that = $(this);
$.ajax({
type: "POST",
dataType: "json",
url: "ggg/hhh/rrr.php",
success: function (msg) {
$('.infos').html(msg['ats']);
arr = msg['valid'];
$('.infos').show("slow");
if (arr == 1) {
that.css("cursor", "default");
that.addClass('already');
that.animate({
opacity: 0.1
}, 1000);
}
}
});
最好的方法是讓螢火蟲和斷點並檢查流量。 您可以使用此方法輕松解決。
如果這不起作用,請嘗試使用live進行單擊操作,以免出現任何綁定問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.