PDA

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



kianajoo
پنج شنبه 25 مهر 1392, 21: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, 22:55 عصر
کد html مربوط به لینکها رو هم بزار..

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

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

Ali0Boy
پنج شنبه 25 مهر 1392, 23: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
پنج شنبه 25 مهر 1392, 23: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
پنج شنبه 25 مهر 1392, 23: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
پنج شنبه 25 مهر 1392, 23:16 عصر
سپاس گذارم...
ولی هیچ کدومش کار نمیکنه...

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

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