Train

PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ساخت فایل jquery.noconflict


Partizan
09-29-2011, 06:42 PM
سلام ممنون می شم اگر لطف کنید توضیحی در مورد ایجاد فایل jquery.noconflict بزارید

من این رو به عنوان مثال دیدم ولی سر در نیاوردم

if (typeof(jQuery) != 'undefined') window.jQueryNivoSlider = jQuery.noConflict();
من می خوام این اسکریپ رو استفاده کنم ولی هیچی کار نمی کنه :20: :77:

unique2world
09-30-2011, 08:00 AM
سلام ممنون می شم اگر لطف کنید توضیحی در مورد ایجاد فایل jquery.noconflict بزارید

من این رو به عنوان مثال دیدم ولی سر در نیاوردم

if (typeof(jQuery) != 'undefined') window.jQueryNivoSlider = jQuery.noConflict();
من می خوام این اسکریپ رو استفاده کنم ولی هیچی کار نمی کنه :20: :77:

دوست عزیز این اسکریپت داره از کتابخانه mootools استفاده ی کنه و ربطی به جی کویری نداره!!!

این کدی هم که شما گذاشتید یکم واسه من عجیبه ولی تابع noConflict() در جی کوئری برای این استفاده میشه که شما بتونید به جای استفاده از علامت اختصاری $ برای jquery از نام دیگری استفاده کنید و به این صورت استفاده میشه:

مثال:

var jq=jQuery.noConflict()

Partizan
09-30-2011, 01:51 PM
ممنون از جوابتون ، من چندتا اسکریپت دارم که با jquery کار می کنند ، و می خوام این اسکریپت رو که با mootools کار می کنه هم به سایتم اضافه کنم ، حالا چطور باید فایل jquery.noconflict رو ایجاد کنم که اسکریپتهایی که از jquery استفاده می کنند بتونن کنار mootools به درستی کار کنند . من در انجمن چیزی پیدا نکردم ، توضیح فارسی هم داده نشده در سایت خود jquery هم چیزی سر در نیاوردم ، لطف می کنید بیشتر توضیح بدید ، حتما دیگران هم چنین مشکلی خواهند داشت ، این تاپیک می​تونه یه مرجع فارسی باشه برای رفع این مشکل.
با سپاس از وقت گرانبهاتون.

Partizan
09-30-2011, 10:41 PM
:23:unique2world عزیز لطفا میشه بیشتر راهنمایی بفرمایید

hejazee
09-30-2011, 11:27 PM
از آن جایی که خیلی از اسکریپت ها از علامت $ استفاده می کنند،
مثلا jQuery از علامت $ به عنوان تابع selector استفاده می کند.
در صورتی که بخواهیم از جند تا کتابخانه با هم و همزمان استفاده کنیم، چون علامت $ بین آن ها مشترک است، باعث ایجاد مشکل می شود.
$ جی کوئری با $ موتولز تداخل پیدا می کند
---------------------
در جی کوئری می شود به جای $ از کلمه ی jQuery استفاده کرد. یعنی کلمه ی jQuery دقیقا معادل $ است
حال برای این که بخواهیم $ را در jQuery غیر فعال کنیم، کافی است بنویسیم
jQuery.noConflict();
به کمک خط فوق، از این به بعد $ جی کوئری دیگر کار نخواهد کرد و با $ موتولز استباه نخواهد شد.
حال می توانیم برای دسترسی به جی کوئری از کلمه ی jQuery استفاده منیم و برای دسترسی به موتولز هم از $ استفاده کنیم و چیزی قاطی نخواهد شد.

از آن جایی که من فقط jQuery بلد هستم و Mootools را بلد نیستم، اگر چیزی را اشتباه گفتم عذر می خواهم.
---------------
در ضمن توصیه می کنم که بیشتر از jQuery استفاده کنید چون اکثر نیاز ها را برطرف می کند.
جی کوئری خیلی پیشرفته تر است و پشتیبانی قوی تر دارد و تعداد خیلی زیادی هم پلاگین دارد که تقریبا همه ی نیاز ها را برطرف می کند. به ندرت لازم می شود که از کتابخانه های دیگر استفاده کنید
ولی هرچه بیشتر بلد باشد و علمتان بیشتر باشد بهتر است
من هم قصد دارم Mootools و Prototype و script.aculo.us و YUI راهم یاد بگیرم
زیرا برای یک طراح وب حرفه ای، بلد بودن همه ی این ها خیلی مهم و مفید است.

Partizan
10-01-2011, 10:51 AM
خیلی ممنون hejazee ، با توجه به مطلبی که فرمودین یعنی باید تمام $ ها رو در تمام فایلهایی که تحت jQuery اجرا میشن به jQuery تغییر بدم .
ممکنه مثالی ذکر کنید

hejazee
10-02-2011, 08:30 AM
البته چون من زیاد به mootools مسلط نیستم، نمی توانم از آن مثال بزنم.
ولی در کل یک روش دیگر نیز وجود دارد. مثلا برنامه ی زیر را که با jQuery است در نظر بگیرید:

$('a').click(function() {
alert('You clicked ' + $(this).attr('href'));
return false;
});
که کد فوق سبب می شود با کلیک کردن روی هر لینکی یک پیغام نشان داده شود.
با استفاده از noConflict باید همه ی $ ها را به jQuery تبدیل نمود

jQuery('a').click(function() {
alert('You clicked ' + jQuery(this).attr('href'));
return false;
});

اما روش بهتر این است:

(function($){
$('a').click(function() {
alert('You clicked ' + $(this).attr('href'));
return false;
});
})(jQuery);


فقط اگز کد بالا ایراد داشت دیگر ببخشید چون فرصت نکردم امتحان. همین جور از حفظ سریغ یک چیزی نوشتم
به روش بالا یک بار jQuery را به یک تابع پاس می کنیم و در داخل تابع از آرگومان $ استفاده می کنیم

Partizan
10-05-2011, 06:18 PM
آیا می شه کاری کرد که بقیه اسکریپت​ها و استایل ها و کلا content بهد از لود کا مل jquey شروع به لود شدن بکنن؟
ممنون می شم اگه راهنمایی بفرمایید ، از وقتی که می زارید ممنون

hejazee
10-05-2011, 10:17 PM
لزومی ندارد که این کار را بکنید
می توانید jQuery را در بالای صفحه قرار دهید تا زود تر از بقیه ی اسکریپت ها لود شود
ولی تعجب می کنم که چرا می خواهید این کار را انجام دهید. زیرا معمولا بعکس این عمل میکنند. معمولا کاری می کنند که ابتدا صفحه به طور کامل لود شود و سپس jQuery لود شود.
دلیلش هم این است که jQuery برای کار کردن لازم دارد که قبلا کل صفحه لود شده باشد و ساختار DOM تشکیل شده باشد
شما باید همیشه کار کنید که اسکریپت هایتان بعد از لود شدن صفحه اجرا شود. زیرا در غیر این صورت با خطای جاوااسکریپت مواجه می شوید.
برای رسیدن به این هدف، اسکریپت هایتان را به صورت زیر اجرا کنید:

$(document).ready(function() {
//your code comes here
});
به این ترتیب کد های شما، بعد از لود شدن کامل صفحه (در زود ترین زمان مناسب) اجرا می شود و با خطایی موجه نمی شوید
اما در صورتی که لازم دارید کاری کنید که لود شده صفحه به کاربر نشان داده نشود و وقتی صفحه کاملا آماده شد، تازه کاربر آن را ببینید می توانید از اسکریپت بسیار جالب زیر استفاده کنید
[Only registered and activated users can see links]

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

Partizan
10-06-2011, 10:28 PM
خیلی ممنون ، اتفاقا به این منظور استفاده از این اسکریپت پرسیده بودم ، چون صفحه من همینطور سیاه می مونه ،..!!
دوتا سوال دیگه هم دارم اگه نتونستم حل کنم ممنون می شم اگه تویه همین موضوع مطرح کنم اگه اشکالی نداره، با سپاس
--
من از این پریلودر استفاده کردم:
<script type="text/javascript" language="javascript">
function is_loaded() { //DOM
if (document.getElementById){
document.getElementById('preloader').style.visibil ity='hidden';
}else{
if (document.layers){ //NS4
document.preloader.visibility = 'hidden';
}
else { //IE4
document.all.preloader.style.visibility = 'hidden';
}
}
}
</script>
امکان داره یه توضیح کوتاه هم بدبد که چطور کار می کنه ، می دونم وقتتون رو زیاد گرفتم . ممنون
وقتی از <body onload="is_loaded();"> استفاده می کنم دیگه کد زیر کار نمی کنه
آیا راه حلی داره؟
function start(){
$(function(){

$('#persian').marquee({
speed : 1,
dirc : 'left',
stopOnOver : true,
draggable : false,
});
});
}

function init(){
$(document).ready(function() {
$('body').fmodal({
uniqueName: 'fmodal',
uniqueName: 'autoloadmodal',
title: 'naslepishro',
});
});
}

window.onload=function(){
start();
init();
}
می شه در window.onload ، کاری کنیم تا init(); با تاخیر چند ثانیه ای اجرا بشه؟

hejazee
10-06-2011, 10:45 PM
دقیقا مطمئن نیستم، ولی به نظر من دیگر با وجود jQuery احتیاجی به استفاده از onload و ... نیست
از همان $.ready() استفاده کنید
دلیلش احتمالا اینه که کدی که نوشته اید با onload قاطی میشه.
حالا باید بیشتر تحقیق کنید.
ولی در کل چه نیاز هست به این روش قدیمی؟

Partizan
10-07-2011, 12:22 AM
خواهش می کنم من خیلی سرچ کردم ولی نتونستم از لحظه ای که درخواست رو براتون فرستادم هم داشتم سرچ می کردم ، لطفا اگه امکان داره کمکم کنید،
مثلا چطور به این time out بدم:
function init(){
$(document).ready(function() {
$('body').fmodal({
uniqueName: 'fmodal',
uniqueName: 'autoloadmodal',
title: 'naslepishro',
});
});
}
در نهایت این function yup() {
setTimeout("window.open('[Only registered and activated users can see links]')", 3000);
} ساده ترین روش بود ولی این مثال خیلی سادست و کد من یه کم طولانیه حالا به کد بالا چطور settimeout بدم