رفتن به مطلب

مشکل عجیب در تداخل کدهای سایت


پست های پیشنهاد شده

سلام

من 2 تا کد دارم که وقتی همزمان در سایت استفاده میکنم هیچ کدوم کار نمیکنن ولی اگر تک به تک استفاده کنم مشکلی ندارن و کار میکنن !!!

یکیش اینه :


// Login Form

$(function() {
var button = $('#loginButton');
var box = $('#loginBox');
var form = $('#loginForm');
button.removeAttr('href');
button.mouseup(function(login) {
box.toggle();
button.toggleClass('active');
});
form.mouseup(function() {
return false;
});
$(this).mouseup(function(login) {
if(!($(login.target).parent('#loginButton').length > 0)) {
button.removeClass('active');
box.hide();
}
});
});


و یکیش هم اینه :


jQuery(document).ready(function($){
jQuery.noConflict();

// initialise
var form, err, reply;
function acp_initialise() {
jQuery('#commentform').after('<div id="error"></div>');
jQuery('#submit').after('<img src="'+acp_path+'loading.gif" id="loading" alt="'+acp_lang[0]+'" />');
jQuery('#loading').hide();
form = jQuery('#commentform');
err = jQuery('#error');
reply = false;
}
acp_initialise();

jQuery('.comment-reply-link').live('click', function() {
// checks if it's a reply to a comment
reply = jQuery(this).parents('.depth-1').attr('id');
err.empty();
});
jQuery('#cancel-comment-reply-link').live('click', function() {
reply = false;
});

jQuery('#commentform').live('submit', function(evt) {
err.empty();

if(form.find('#author')[0]) {
// if not logged in, validate name and email
if(form.find('#author').val() == '') {
err.html('<span class="error">'+acp_lang[1]+'</span>');
return false;
}
if(form.find('#email').val() == '') {
err.html('<span class="error">'+acp_lang[2]+'</span>');
return false;
}
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!filter.test(form.find('#email').val())) {
err.html('<span class="error">'+acp_lang[3]+'</span>');
if (evt.preventDefault) {evt.preventDefault();}
return false;
}
} // end if
if(form.find('#comment').val() == '') {
err.html('<span class="error">'+acp_lang[4]+'</span>');
return false;
}

jQuery(this).ajaxSubmit({

beforeSubmit: function() {
jQuery('#loading').show();
jQuery('#submit').attr('disabled','disabled');
}, // end beforeSubmit

error: function(request){
err.empty();
var data = request.responseText.match(/<p>(.*)<\/p>/);
err.html('<span class="error">'+ data[1] +'</span>');
jQuery('#loading').hide();
jQuery('#submit').removeAttr("disabled");
return false;
}, // end error()

success: function(data) {
try {
// if the comments is a reply, replace the parent comment's div with it
// if not, append the new comment at the bottom
var response = jQuery("<ol>").html(data);
if(reply != false) {
jQuery('#'+reply).replaceWith(response.find('#'+reply));
jQuery('.commentlist').after(response.find('#respond'));
acp_initialise();
} else {
if (jQuery(document).find('.commentlist')[0]) {
response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
} else {
jQuery('#respond').before(response.find('.commentlist'));
}
if (jQuery(document).find('#comments')[0]) {
jQuery('#comments').html(response.find('#comments'));
} else {
jQuery('.commentlist').before(response.find('#comments'));
}
}
form.find('#comment').val('');
err.html('<span class="success">'+acp_lang[5]+'</span>');
jQuery('#submit').removeAttr("disabled");
jQuery('#loading').hide();

} catch (e) {
jQuery('#loading').hide();
jQuery('#submit').removeAttr("disabled");
alert(acp_lang[6]+'\n\n'+e);
} // end try

} // end success()

}); // end ajaxSubmit()

return false;

}); // end form.submit()
}); // end document.ready()


چجوری میشه هر 2 تا اینارو استفاده کنم و مشکلی پیش نیاد ؟

پیشاپیش تشکر از وقتی که برای پاسخ و رفع مشکل بنده میزارید

لینک به ارسال

سلام.

بهش میگن تداخل کد های جی کوئیری.

بار ها توی انجمن بحث شده.

جستجو کنین.

لینک به ارسال
زحمت کشیدی خوب اینو همه میدونن که به این میگن تداخل کدهای jquery

نه دیگه عزیزم.

باید تیکه ی دوم که گفتم جستجو کن رو میدیدی داداشم.

مشکل تداخل جی کوئیری

همین رو جستجو کن انواع مختلفش برات میاد ، اگه رفتی و درست نشد بگو تا بیشتر راهنمایی کنیم.

لینک به ارسال

نه دیگه عزیزم.

باید تیکه ی دوم که گفتم جستجو کن رو میدیدی داداشم.

مشکل تداخل جی کوئیری

همین رو جستجو کن انواع مختلفش برات میاد ، اگه رفتی و درست نشد بگو تا بیشتر راهنمایی کنیم.

مشکل من که نیست

ولی بهتره به جای اسپم دادن کمک کنیم کاربرارو

لینک به ارسال

نه دیگه عزیزم.

باید تیکه ی دوم که گفتم جستجو کن رو میدیدی داداشم.

مشکل تداخل جی کوئیری

همین رو جستجو کن انواع مختلفش برات میاد ، اگه رفتی و درست نشد بگو تا بیشتر راهنمایی کنیم.

دوست گرامی بنده اخلاقم اینه که قبل از زدن تاپیک اول خوب میگردم اگر نتیجه ای نداشت تاپیک میزنم

متاسفانه کسی مشکل بندرو نداشت و تاپیک هایی که بود همگی مشکلشون فرق داشت

لینک به ارسال

اگه رفتی و درست نشد بگو تا بیشتر راهنمایی کنیم.

بله هیچ کدوم مشکل بنده نبود و نتونستم برطرف کنم اگر زحمتی نیست کمک کنید تا مشکلم رفع بشه

مرسی

لینک به ارسال

کد اول رو به این صورت قرار بده ببین درست میشه


jQuery(function() {
var button = jQuery('#loginButton');
var box = jQuery('#loginBox');
var form = jQuery('#loginForm');
button.removeAttr('href');
button.mouseup(function(login) {
box.toggle();
button.toggleClass('active');
});
form.mouseup(function() {
return false;
});
jQuery(this).mouseup(function(login) {
if(!(jQuery(login.target).parent('#loginButton').length > 0)) {
button.removeClass('active');
box.hide();
}
});
});

لینک به ارسال

کد اول رو به این صورت قرار بده ببین درست میشه


jQuery(function() {
var button = jQuery('#loginButton');
var box = jQuery('#loginBox');
var form = jQuery('#loginForm');
button.removeAttr('href');
button.mouseup(function(login) {
box.toggle();
button.toggleClass('active');
});
form.mouseup(function() {
return false;
});
jQuery(this).mouseup(function(login) {
if(!(jQuery(login.target).parent('#loginButton').length > 0)) {
button.removeClass('active');
box.hide();
}
});
});

تشکر

ببنیدمن میخوام هر 2 تا کد رو با هم مخلوط بکنم که هر 2 تاش کار کنه

الان اون کد کار نکرد یه کد دیگه پیدا کردم که اینه :


$(document).ready(function(){
$('#login-trigger').click(function(){
$(this).next('#login-content').slideToggle();
$(this).toggleClass('active');
if ($(this).hasClass('active')) $(this).find('span').html('▲')
else $(this).find('span').html('▼')
})
});

حالا میخوام با این کد مخلوط بشه و هر 2 تاش درست کار بکنه :


jQuery(document).ready(function($){
jQuery.noConflict();




// initialise
var form, err, reply;
function acp_initialise() {
jQuery('#commentform').after('<div id="error"></div>');
jQuery('#submit').after('<img src="'+acp_path+'loading.gif" id="loading" alt="'+acp_lang[0]+'" />');
jQuery('#loading').hide();
form = jQuery('#commentform');
err = jQuery('#error');
reply = false;
}
acp_initialise();

jQuery('.comment-reply-link').live('click', function() {
// checks if it's a reply to a comment
reply = jQuery(this).parents('.depth-1').attr('id');
err.empty();
});
jQuery('#cancel-comment-reply-link').live('click', function() {
reply = false;
});

jQuery('#commentform').live('submit', function(evt) {
err.empty();

if(form.find('#author')[0]) {
// if not logged in, validate name and email
if(form.find('#author').val() == '') {
err.html('<span class="error">'+acp_lang[1]+'</span>');
return false;
}
if(form.find('#email').val() == '') {
err.html('<span class="error">'+acp_lang[2]+'</span>');
return false;
}
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!filter.test(form.find('#email').val())) {
err.html('<span class="error">'+acp_lang[3]+'</span>');
if (evt.preventDefault) {evt.preventDefault();}
return false;
}
} // end if
if(form.find('#comment').val() == '') {
err.html('<span class="error">'+acp_lang[4]+'</span>');
return false;
}

jQuery(this).ajaxSubmit({

beforeSubmit: function() {
jQuery('#loading').show();
jQuery('#submit').attr('disabled','disabled');
}, // end beforeSubmit

error: function(request){
err.empty();
var data = request.responseText.match(/<p>(.*)<\/p>/);
err.html('<span class="error">'+ data[1] +'</span>');
jQuery('#loading').hide();
jQuery('#submit').removeAttr("disabled");
return false;
}, // end error()

success: function(data) {
try {
// if the comments is a reply, replace the parent comment's div with it
// if not, append the new comment at the bottom
var response = jQuery("<ol>").html(data);
if(reply != false) {
jQuery('#'+reply).replaceWith(response.find('#'+reply));
jQuery('.commentlist').after(response.find('#respond'));
acp_initialise();
} else {
if (jQuery(document).find('.commentlist')[0]) {
response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
} else {
jQuery('#respond').before(response.find('.commentlist'));
}
if (jQuery(document).find('#comments')[0]) {
jQuery('#comments').html(response.find('#comments'));
} else {
jQuery('.commentlist').before(response.find('#comments'));
}
}
form.find('#comment').val('');
err.html('<span class="success">'+acp_lang[5]+'</span>');
jQuery('#submit').removeAttr("disabled");
jQuery('#loading').hide();

} catch (e) {
jQuery('#loading').hide();
jQuery('#submit').removeAttr("disabled");
alert(acp_lang[6]+'\n\n'+e);
} // end try

} // end success()

}); // end ajaxSubmit()

return false;

}); // end form.submit()

}); // end document.ready()


میدونم مشکلش سادست از نظر شما ولی شرمنده من مبتدی هستم الان چند روزه هر کاری میکنم درست کار نمیکنه

لینک به ارسال

من یکی که حوصله و فرصت خوندن همه کدها را ندارم دیگران رو نمی دونم

اگر بگید می خواهید چه کاری را با این کدها انجام بدید شاید بشه کد درست را گذاشت که مجبور به ترکیب کدهای نا همگون نباشید

لینک به ارسال

من یکی که حوصله و فرصت خوندن همه کدها را ندارم دیگران رو نمی دونم

اگر بگید می خواهید چه کاری را با این کدها انجام بدید شاید بشه کد درست را گذاشت که مجبور به ترکیب کدهای نا همگون نباشید

سلام جناب فخار عزیز

من در سایتم یک لینک دارم به این شکل :


<a id="login-trigger" href="#">ورود به سایت</a>

وقتی روش کلیک میشه یک فرم باز میشه که برای ورود کاربر به سایتم هست به کمک جی کوئری که کدش اینه :


$(document).ready(function(){
$('#login-trigger').click(function(){
$(this).next('#login-content').slideToggle();
$(this).toggleClass('active');
if ($(this).hasClass('active')) $(this).find('span').html('▲')
else $(this).find('span').html('▼')
})
});

این درست کار میکنه

حالا کد دومم که در بالا دادم و زیاد بود گفتید فرصت خوندنش را ندارید برای قسمت دیدگاه های وردپرس هست که دیدگاه را به صورت آجاکس در میاره

اما این 2 کد با هم کار نمیکنند یعنی فقط دیدگاه ها درست کار میکنه ولی فرم ورود نه

تک به تک استفاده میکنم کار میکنند ولی با هم استفاده بکنم نه

خودم چند روزه در اینترنت به دنبال رفع مشکل هستم ولی متاسفانه توانایی برطرف کردن مشکل را ندارم برای همین تاپیک زدم

البته جناب فخار اگر زیاد کار داره ایرادی نداره زحمت نمیدم بهتون

لینک به ارسال

من یکی که حوصله و فرصت خوندن همه کدها را ندارم دیگران رو نمی دونم

اگر بگید می خواهید چه کاری را با این کدها انجام بدید شاید بشه کد درست را گذاشت که مجبور به ترکیب کدهای نا همگون نباشید

جناب فخار عزیز مشکلم حل شد

یکی از دوستان کمک کرد و گفت باید کد

jQuery.noConflict();

را حذف میکردم

فقط میشه یک توضیحی در مورد این کد بدید که کارش چیه و چرا نمیزاشت کدها درست عمل بکنند ؟

لینک به ارسال

مشکل تداخل در جی کوئری به یک مشکل روتین تبدیل شده .من این مشکل رو با لایو آیکون داشته هر کارکردم رفع نشد آخرم تصمیم گرفتم از اون جی کوئری استفاده نکنم.بازم اگه دوستان و مدیران محترم بخشی رو مخصوص این امر تهیه کنند و راه حل ارائه کنند کمک بزرگی به ما کردند

با تقدیم احترام

لینک به ارسال

عجب :D

jquery.noconflict داشته کدتون و متوجّه نشدیم؟

گاهی اوقات ممکنه که شما بخواین از چند تا کوئری مختلف به جز jQuery استفاده کنی که تداخل پیدا کنه با جی کوئری

این کد رو میذارن که اگه خواستیم از فریم فرک دیگه (مثلاً انگولار امبر و...) استفاده کنیم بتونیم جی کوئیری رو حذف کنیم.

البتّه این یکی از کاربرد هاش هست که من میدونم

توضیحات بیشتر رو اینجا داده:

http://api.jquery.com/jquery.noconflict/

http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

http://www.w3schools.com/jquery/jquery_noconflict.asp

ویرایش شده توسط علی زینلی
لینک به ارسال

آهان

تشکر

ولی به خاطر همین کد الان نزدیک 2 هفتست که سردرگم شدم

حالا نویسنده این افزونه چرا این کد رو گذاشته خدا میدونه شاید قصد اذیت کردن داشته !

لینک به ارسال

اینکه که خوبه!

گاهی اوقات سر یه ; یه شب تمام باید کار کرد... :D

به احتمال زیاد میخواسته اگر از فریم ورک دیگه ای استفاده میکنی به مشکل برنخوره سایتت...

لینک به ارسال
آهان تشکر ولی به خاطر همین کد الان نزدیک 2 هفتست که سردرگم شدم حالا نویسنده این افزونه چرا این کد رو گذاشته خدا میدونه شاید قصد اذیت کردن داشته !

البته علت مشکل شما این کد نبوده برداشتن این کد باعث شده جلوی لود کتابخانه های اضافی جی کوئری گرفته نشه و در نتیجه اسکریپتهاتون کار کنه

اما در واقع الان در سایت شما داره بیش از یک کتابخانه جی کوئری لود می شه که فشار زیادی رو به منابعتون وارد می کنه برای رفع اصولی مشکل یکبار کتابخانه جی کوئری را آپلود کنید توی قالبتون و این کد را بگذارید در functions.php قالبتون


wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery.js', 'jquery', '1.10.2');
wp_enqueue_script('jquery');

لینک به ارسال

البته علت مشکل شما این کد نبوده برداشتن این کد باعث شده جلوی لود کتابخانه های اضافی جی کوئری گرفته نشه و در نتیجه اسکریپتهاتون کار کنه

اما در واقع الان در سایت شما داره بیش از یک کتابخانه جی کوئری لود می شه که فشار زیادی رو به منابعتون وارد می کنه برای رفع اصولی مشکل یکبار کتابخانه جی کوئری را آپلود کنید توی قالبتون و این کد را بگذارید در functions.php قالبتون


wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery.js', 'jquery', '1.10.2');
wp_enqueue_script('jquery');

تشکر جناب فخار

این کدی که گفتید در فانکشن بود و همیشه در تمامی صفحات سایتم جی کوئری لود میشه :

jquery.js

jquery-migrate.min.js

الان شما میگید من این کد jQuery.noConflict(); رو دوباره بزارم که چیز اضافه لود نکنه ؟

این js رو من فقط تو بخش کامنت های سایتم استفاده کردم فکر کنم زیاد مصرف نداشته باشه ولی خوب اگر از نظر شما باید بزارم میزارم

لینک به ارسال

نه نیازی به دوباره گذاشتنش نیست

اگر در سورس سایت فقط یکبار فایل jquery.js داره لود می شه مهم نیست و همه چی درسته

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...