<input id='lightson' class="buttonl" type="button" value="On" />
<input id='lightsoff' class="buttonl" type="button" value="Off" />
<p class="status2"></p>
<script type="text/javascript">
$('#lightson').click(function(){
$.get('http://<?php echo $_SESSION['ip']?>/?2', {}, callbacka());
function callbacka(){
$('.status2').load('status2.php').delay(3000).queue(function() {
$(this).empty();
});
}
});
$('#lightsoff').click(function() {
$.get('http://<?php echo $_SESSION['ip']?>/?3', {}, callbackb());
function callbackb(){
$('.status2').load('status3.php').delay(3000).queue(function() {
$(this).empty();
});
}
});
</script>
後運行當我點擊lightson
,我想在加載的東西我div
後三秒清空。另外,當我點擊lightsoff
我想加載其他內容並在三秒鐘後清空它,因爲兩個按鈕使用相同的div
。我的jQuery排隊功能無法在第一時間
此代碼只能使用一次。當我的頁面加載時,我點擊兩個按鈕中的一個(它與哪個按鈕無關),但是如果我點擊另一個按鈕,它將加載div
中的信息,但不會清空它。
我對於時間的工作新的代碼是:
<input id='lightson' class="buttonl" type="button" value="On" />
<input id='lightsoff' class="buttonl" type="button" value="Off" />
<p class="status2"></p>
<script type="text/javascript">
$('#lightson').click(function(){
$.get('http://<?php echo $_SESSION['ip']?>/?2', {}, callbacka());
function callbacka() {
$('.status2').load('status2.php').delay(3000).queue(function(){
$('.status2').empty().dequeue();
});
}
});
$('#lightsoff').click(function() {
$.get('http://<?php echo $_SESSION['ip']?>/?3', {}, callbackb());
function callbackb(){
$('.status2').load('status3.php').delay(3000).queue(function() {
$('.status2').empty().dequeue();
});
}
});
</script>
說明了什麼,我想上面的代碼:我有兩個按鈕。當我點擊其中的一個時,我想將值「2」發送到一個URL並在類status2中加載status2.php的內容,並在3secs之後清空類status2。等如果我點擊另一個按鈕。我認爲上面的代碼完成這項工作。 如果我從回調中刪除「()」,當我點擊按鈕時只發送值「2」而沒有其他的事情發生。
我不認爲'#lightson'正在重新加載。只有'.status2'的內容。 – 2011-12-25 03:07:04
實際上,在'load'回調中,'this' **是'load'被調用的DOM元素。從'load'返回的數據作爲第一個參數傳遞給回調函數。 – 2011-12-25 03:10:19
@火箭 - 你是對的 - 謝謝你。當然,當setTimeout回調函數被調用時,'this'是另外一個東西,這就是爲什麼我需要$狀態的原因:) – 2011-12-25 03:14:55