ورود

View Full Version : ارسال اخرین id به setInterval



kianajoo
پنج شنبه 25 مهر 1392, 22:18 عصر
درود....
من میخوام هر بار که روی لینک مورد نظر کلیک کردم مقدار id رو به صفحه ajax.php در هر سه ثانیه بفرستم...
برای اولین بار روی لینک کلیک میکنم درست کار میکنه....مثلا id =1 رو اجرا میکنه هر سه ثانیه حالا اگه رو یه لینک دیگه کلیک کنم مثلا id=2 هر سه ثانه هم مقدار 1 و هم مقدار 2 رو به صفحه ajax.php ارسال میکنه....من میخوام اخرین مقدار کلیک شده ارسال بشه....هر کاری میکنم نمیتونم...
:گیج:

$("[href='#topopup']").live("click",function() {

var id= $(this).attr('class');




var interval = setInterval (function() {

$("#ajax").load("ajax.php",{id:id},function(){

});

}, 3000);


});

Javidhb
پنج شنبه 25 مهر 1392, 23:55 عصر
کد html مربوط به لینکها رو هم بزار..

اسکریپت که درسته... مشکلش باید از مقداری که به id تخصیص میدید باشه... باید ساختار html (لینک ها) رو دید.

Ali0Boy
پنج شنبه 25 مهر 1392, 23:56 عصر
سلام. شما باید داخل فانکش کدی بزنید که اگر ID جاری با ID قبلی متفاوت بود (یعنی هر بار ID رو داخل یه متغییر ذخیره کنید)، متغییر interval را remove کند و دوباره متغییر interval را با تابع جدید مقدار دهی کنید.

Ali0Boy
جمعه 26 مهر 1392, 00:03 صبح
میتونی یکی از دو کد زیر رو استفاده کنی، فکر کنم جواب بده:


var interval = setInterval (function() {
if(id!=pid) {
clearInterval(this.interval);
interval = setInterval (function() { $("#ajax").load("ajax.php",{id:id},function(){ }); }, 3000);
} else {
$("#ajax").load("ajax.php",{id:id},function(){ });
}
}, 3000);
var pid = id;


یا



var interval = setInterval (function() {
clearInterval(this.interval);
interval = setInterval (function() { $("#ajax").load("ajax.php",{id:id},function(){ }); }, 3000);
}, 3000);

kianajoo
جمعه 26 مهر 1392, 00:04 صبح
اینم کد html


<ul>
<li><a href="#topopup" class="1">1</a></li>
<li><a href="#topopup" class="2">2</a></li>
<li><a href="#topopup" class="3">3</a></li>
<li><a href="#topopup" class="4">4</a></li>
<li><a href="#topopup" class="5">5</a></li>
<li><a href="#topopup" class="6">6</a></li>
</ul>

Ali0Boy
جمعه 26 مهر 1392, 00:06 صبح
البته از اونجایی که فکر کردم، امکان داره کدها خطا داشته باشه، کد زیر رو هم زدم:


var interval = setInterval (function() { $("#ajax").load("ajax.php",{id:id},function(){ }); }, 1);
setInterval (function() {
clearInterval(this.interval);
interval = setInterval (function() { $("#ajax").load("ajax.php",{id:id},function(){ }); }, 1);
}, 3000);


البته این کد ها رو من همین الان داخل notepad میزنم و حتما خطاهایی هم داره چون نه درموردش فکر می کنه و نه تستش می کنه :چشمک::قهقهه: :گیج:

kianajoo
جمعه 26 مهر 1392, 00:16 صبح
سپاس گذارم...
ولی هیچ کدومش کار نمیکنه...

kianajoo
جمعه 26 مهر 1392, 00:42 صبح
این مشکلمو حل کرد.
:لبخند:
http://stackoverflow.com/questions/10462640/restart-jquery-setinterval-and-reset-all-vars

Javidhb
جمعه 26 مهر 1392, 00:55 صبح
جالب بود... یه چیز جدید یاد گرفتیم...
مرسی که راه حلش رو هم گفتی ;)