۱۳۸۷/۱۱/۲۰

رفع تداخل jQuery با كتابخانه‌هاي مشابه


قبل از شروع، يك خبر!
VsDoc for jQuery 1.3.1 (جهت فعال سازي intellisense آخرين نگارش جي كوئري در VS.Net)


اگر سعي كنيد jQuery را به همراه ساير كتابخانه‌هاي جاوا اسكريپتي ديگر به صورت همزمان استفاده كنيد (مثلا mootools يا ASP.Net Ajax و امثال آن)، احتمالا قسمتي و يا تمامي كدهاي جاوا اسكريپتي شما كار نخواهند كرد. براي مثال update panel شما در ASP.Net Ajax از كار مي‌افتد، يا كدهاي mootools شما ديگر كار نمي‌كنند. علت اينجا است كه تمامي اين كتابخانه‌ها از نشانه $ به عنوان متغيري عمومي كه بيانگر نام مستعار كتابخانه مربوطه است استفاده مي‌كنند و در نهايت تمام اين‌ها با هم تداخل خواهند كرد.

خوشبختانه jQuery امكان رفع اين تداخل را پيش بيني كرده است كه به صورت زير مي‌باشد:

<script type="text/javascript" language="javascript" src="jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
//tip-1
$("select > option").each(function() {
var obj = $(this);
obj.attr("title", obj.attr("value"));
});
//tip-1
});
</script>

كد مثال فوق، به تمامي آيتم‌هاي drop down list‌ هاي شما در يك صفحه، بر اساس value هر آيتم موجود در آن‌ها، يك tooltip اضافه مي‌كند. (با IE7 به بعد و فايرفاكس سازگار است)
در اينجا ابتدا jQuery.noConflict فراخواني شده و سپس document ready متداول هم بايد اندكي مطابق كد فوق تغيير كند. مابقي كدهاي شما از اين پس نيازي به تغيير نخواهند داشت. (روش‌هاي ديگري هم براي تغيير نام $ وجود دارند كه در مستندات مربوطه قابل مشاهده است)