У меня есть сайт cakePhp, я использую прототип для всего, что есть в ajax, и jQuery для анимации, ...
Я справился с проблемой jquery-prototype так:
echo $javascript->link('jquery-1.6.2');
echo $javascript->link('jquery.cookie');
echo $javascript->link('jQueryNoConflict');
echo $javascript->link('prototype');
И jQuerynoConflict содержит только
$.noConflict();
Я создал небольшой JS-скрипт, который показывает элементы с определенным классом и скрывает другие элементы с другим классом:
if(jQuery.cookie('isRawPrice')==1){
jQuery('.priceWithoutTva').show();
jQuery('.priceWithTva').hide();
}else{
jQuery('.priceWithoutTva').hide();
jQuery('.priceWithTva').show();
}
Это работает на каждой моей странице, кроме той, на которой есть элемент карты Google.который я добавляю так:
function InitMap(elementId, initPosition, initZoom, multiplePolygonsString) {
var pos = initPosition.split(',');
var myLatLng = new google.maps.LatLng(pos[0], pos[1] );
var myOptions = {
zoom:initZoom,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById(elementId), myOptions);
var multiplePolygons = multiplePolygonsString.split(';');
for(var i=0;i<multiplePolygons.length;i++){
var currentPolygon,match,coordinates = [];
var reg = /\(\s*([0-9.-]+)\s*,\s*([0-9.-]+)\s*\)/g ;
while((match = reg.exec(multiplePolygons[i]))!==null){
coordinates.push( new google.maps.LatLng(+match[1], +match[2]));
}
currentPolygon = new google.maps.Polygon({
paths: coordinates,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: "#FF0000",
fillOpacity: 0.35
});
currentPolygon.setMap(map);
// Add a listener for the click event
google.maps.event.addListener(currentPolygon, 'click', function(event){ showArrays(event, "testInfoBulle"); });
}
infowindow = new google.maps.InfoWindow();
}
(это в основном загружает карту и создает несколько полигонов в определенных регионах.).Эта карта генерируется каждый раз, когда я ее отображаю.
Но когда я отображаю ее и пытаюсь скрыть / показать с предыдущим кодом, я получаю следующее исключение:
Uncaught TypeError: Object #<SVGAnimatedString> has no method 'match'prototype.js:300
Enumerable.eachprototype.js:300
Enumerable.injectprototype.js:372
document.getElementsByClassNameprototype.js:932
Sizzlejquery-1.6.2.js:4869
jQuery.fn.extend.findjquery-1.6.2.js:5188
jQuery.fn.jQuery.initjquery-1.6.2.js:189
jQueryjquery-1.6.2.js:27
updateDisplay.js:26 ---> This is the jQuery('.priceWithoutTva').show(); line
(anonymous function)cat3:3000:643
onclickcat3:3000:644
Почему этопроходит через библиотеку прототипов, когда он находится в методе jquery ???