Страницы: 1
Есть простенькая функция:
<script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> function removeElement(){ $('.ymaps-overlay-stepwise-pane').empty() } </script>
работает во всех браузерах(IE, Opera, Chrome), но не работает в FF(
Функция нужна для того, что удалить все элементы имеющие класс '.ymaps-overlay-stepwise-pane' и, соответственно, очистить яндекс-карту на своем сайте.
Вызов функции:
Может я что-то не так делаю? Или для фокса должно быть другое решение
Отредактировано mauzer17 (08-06-2012 17:16:39)
Отсутствует
Попробуй вместо метода empty() применить remove()
$('.ymaps-overlay-stepwise-pane').remove();
Так же не работает, во всех остальных браузерах все нормально обоими методами((
Отсутствует
Тема перенесена из форума «Firefox» в форум «Разработка».
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Проверил, у меня работает и remove и empty. Fx14.0b6
<html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> function removeElement() { $('.ymaps-overlay-stepwise-pane').remove() } </script> </head> <body> <a href="#" onclick="removeElement()">Очистить карту</a> <div class="ymaps-overlay-stepwise-pane" style="background: #ff0000; width: 128px; height: 128px;"> test </div> </body> </html>
Отредактировано Astronix (11-06-2012 19:27:19)
Отсутствует
Проверил, у меня работает и remove и empty. Fx14.0b6
Выделить кодКод:
<html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> function removeElement() { $('.ymaps-overlay-stepwise-pane').remove() } </script> </head> <body> <a href="#" onclick="removeElement()">Очистить карту</a> <div class="ymaps-overlay-stepwise-pane" style="background: #ff0000; width: 128px; height: 128px;"> test </div> </body> </html>
Здесь есть одна тонкость - в исходном html коде такого класса нет, то есть грузиться код яндекс-карт, который создает метки на карте имеющий этот класс. Прямого объявления как у вас примере нет. Скорее всего проблема в этом, т.к. при инициализации класса как у вас у меня все так же заработало(стирается только квадрат, метки остаются((()
Можно это как-нибудь обойти? Или сделать проход по всей собранной уже странице с поиском и удалением всех элементов класса?
Отредактировано mauzer17 (13-06-2012 12:23:30)
Отсутствует
Наверное стоит привести полный код страницы благо он не очень большой -
<!DOCTYPE html> <html> <head> <title>Примеры. Загрузка XML.</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> ymaps.ready(init); function init () { var myMap = new ymaps.Map("map", { center: [51.53893, 46.004442], zoom: 11 }); searchControl = new ymaps.control.SearchControl({ provider: 'yandex#publicMap' }); window.loadXml = function (url, el) { ymaps.geoXml.load(url).then(function (res) { $(".ymaps-point-overlay").addClass(el); myMap.geoObjects.add(res.geoObjects); }); }; myMap.controls.add("mapTools") .add("zoomControl") .add("typeSelector") map.controls.add(searchControl, { left: '40px', top: '10px' }); }; function DeleteYMap(){ try{ var Elements=document.getElementsByTagName("ymap"); for(var i=0;i<Elements.length;i++){ if (Elements[i].className=="ymaps-overlay-stepwise-pane"){ Elements[i].innerHTML=""; }; }; } catch(ex){alert(ex)}; }; document.getElementById("DelMap").оnclick=DeleteYMap; function removeElement(elementId){ element = document.document.getElementsByClassName(elementId); if (element) { element.parentNode.removeChild(element); } } function removeElement(element){ $(element).empty(); } function check(el){ $(el).attr("checked","checked"); } function uncheck(el){ $("input:checkbox").removeAttr("checked"); } function show_alert(el, mp){ if (el.checked) {} else { check(el); loadXml(mp, el) } } </script> </head> <body style="line-height: 0 px;"> <h2>Карта садов города Саратова</h2> <div id="map" style="width: 600px; height: 500px; line-height: 11px; margin: 10px 0 0 -1px"></div> <div style="margin: -500px 0 0 605px"> Сады нашего города</br> <table class="form"> <tr> <td> <input id="GorKom" type="checkbox" disabled/> <a href="#" onclick="show_alert(GorKom, 'http://edu.sarkomobr.ru/media/cms_page_media/2257/Gal2uC6FnzXFEGWcfmAJCs1nlRy809Ns_11.xml'); return false;">Городской комитет</a> </td> </tr> <tr> <td> <input id="Zavod" type="checkbox" disabled/> <a href="#" onclick="show_alert(Zavod, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/zavod.xml'); return false;">Заводской</a> </td> </tr> <tr> <td> <input id="Frunze" type="checkbox" disabled/> <a href="#" onclick="show_alert(Frunze, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/frunze.xml'); return false;">Фрунзенский</a> </td> </tr> <tr> <td> <input id="Lenin" type="checkbox" disabled/> <a href="#" onclick="show_alert(Lenin, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/lenin_2.xml'); return false;">Ленинский</a> </td> </tr> <tr> <td> <input id="Oktab" type="checkbox" disabled/> <a href="#" onclick="show_alert(Oktab, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/oktab.xml'); return false;">Октябрьский</a> </td> </tr> <tr> <td> <input id="Kirov" type="checkbox" disabled/> <a href="#" onclick="show_alert(Kirov, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/kirov_3.xml'); return false;">Кировский</a> </td> </tr> <tr> <td> <input id="Vol" type="checkbox" disabled/> <a href="#" onclick="show_alert(Vol, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/vol.xml'); return false;">Волсжкий</a> </td> </tr> <tr> <td> <a href="#" onclick="show_alert(GorKom, 'http://edu.sarkomobr.ru/media/cms_page_media/2257/Gal2uC6FnzXFEGWcfmAJCs1nlRy809Ns_11.xml'); show_alert(Zavod, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/zavod.xml'); show_alert(Frunze, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/frunze.xml'); show_alert(Vol, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/vol.xml'); show_alert(Lenin, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/lenin_2.xml'); show_alert(Oktab, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/oktab.xml'); show_alert(Kirov, 'http://sartest.edu.sarkomobr.ru/media/cms_page_media/2257/kirov_3.xml'); return false;">Показать всё</a> </td> </tr> <tr> <td> <a href="#" onclick="removeElement('.ymaps-overlay-stepwise-pane'); uncheck('123'); return false;">Очистить карту</a> </td> </tr> </table> </div> </body> </html>
Отсутствует
У вас какая-то адская каша в скриптах
С одной стороны html5, jQuery и т.п., а с другой обращение к элементам по id, что является устаревшим уже лет десять.
В общем, почините сначала ошибки в своём скрипте (ctrl-shift-j показывает консоль ошибок) а потом начинайте пенять на jQuery.
Isn't it ironic... don't you think? — Alanis Morissette
Отсутствует
У вас какая-то адская каша в скриптах
С одной стороны html5, jQuery и т.п., а с другой обращение к элементам по id, что является устаревшим уже лет десять.
В общем, почините сначала ошибки в своём скрипте (ctrl-shift-j показывает консоль ошибок) а потом начинайте пенять на jQuery.
Да, я посмотрел все ошибки - почти все генерируются кодом яндекс-карт,(то есть именно этот код был в примерах у яндекса, модификаций - только то, что там он инициализировался при запуске, а у меня по клику на функцию), и одна ошибка генерируется jQ - по крайней мере, такой функции в исходном коде у меня нет, а отладчик хрома вообще не видит такой ошибки.
А на счет обращения по id - разве это не самый надежный и простой способ?
Я вообще-то не занимаюсь профессиональной разработкой сайтов, только мелочи, просто решили сделать карту дет.садиков для родного города.
mauzer17 пишета если по теме, подскажите хак для js, что бы дополнительная функция отрабатывала ТОЛЬКО в FF?
определяем браузер и запускаем/не запускаем.
alert(navigator.appCodeName)
до кучи
Спасибо, сейчас посмотрю!
Отсутствует
автор как решили проблему?
Отсутствует
Страницы: 1