2012-03-30 4 views
1

у меня есть 2 файл JS в моей осине сайте под названиемвызывать одноименные функции в jquery?

1-jquery.datepick.js 

2-jquery.hijridatepick.js 

эти файлы имеют ту же функцию, имя, но второе один появляться всплывающим hijricalender я называть его

<script type="text/javascript"> 
     $(function() { 
      $('[id$=TextBox1]').datepick({ dateFormat: 'dd/mm/yyyy' }); 
     }); 
    </script> 

для textbox2 я хочу 2 использовать datepick функция из первого файла, как айКолл это причина я refrenced первый файл как

$('[id$=TextBox2]').datepick({ dateFormat: 'dd/mm/yyyy' }); 

, но этот вызов еще раз функция второй файл ???

ответ

4

Второй файл перезаписывает первый. Вы должны изменить имя одной из функций, чтобы избежать столкновения.

Вы найдете что-то вроде этого в файлах:

jQuery.fn.datepick = function() { 
    // etc. 
}; 

Здесь создан метод плагин JQuery. Просто измените datepick в одном или обоих файлах на что-то другое и уникальное.

+0

я искал JQuery .fn.datepick, но я нашел fn.datepick, что об этом –

+0

Как я уже сказал, это будет что-то вроде 'jQuery.fn.datepick'. Не видя фактических файлов, сложно с уверенностью сказать, что 'fn.datepick' является правильной частью кода, но, вероятно, это так. Просто сделайте резервную копию своих файлов, прежде чем редактировать их, на всякий случай. – FishBasketGordo

+0

поблагодарить у очень –

1

Как указано в ответе FishBasketGordo, вторая загружаемая функция перезапишет первое, и изменение имени одного исправит это, однако есть более глубокая проблема, которая должна быть решена.

Причина в том, что функции добавляются в глобальное пространство имен. В javascript файл, из которого поступает код, не имеет значения. Один из способов избежать избежать загрязнения глобального пространства имен является обертывание функций внутри объекта, так что в вашем случае вы можете иметь:

/* 1-jquery.datepick.js */ 
datepick = new Object; 
datepick.datepick = function() { 
    /* function definition here */ 
    alert('first file function'); 
}; 

/* 2-jquery.hijridatepick.js */ 
hijridatepick = new Object; 
hijridatepick.datepick = function() { 
    /* function definition here */ 
    alert('second file function'); 
}; 

Эти функции могут быть доступны с помощью:

datepick.datepick(); 
/* alerts 'first file function' */ 

hijridatepick.datepick(); 
/* alerts 'second file function' */ 
+0

извините, но я thinked, что он работал, но не так первый код u означает, что я пишу его в js-файлах или редактирую somthing в нем, если я его добавлю, но где именно и спасибо. –

+0

@David Mason - Это хорошие моменты, но помните, что два файла - это плагины jQuery, поэтому они не загрязняют глобальное пространство имен. Они загрязняют пространство имен jQuery. Разделив две функции на отдельные объекты, вы потеряете много сил за механизмом плагина jQuery, который представляет собой здоровенный компромисс. – FishBasketGordo

+0

Может ли кто-нибудь мне помочь? –

Смежные вопросы