Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: правильное использование ready()

Добрый день!

Сейчас у меня весь код выполняется в $(document).ready({...});

В целях оптимизации решил сделать так,чтобы часть методов выполнялись только при загрузки определенных элементов.

Например:


$('#project_list').ready(function(){

    var rez='';
    var url= 'index.php?r=site%2Fgetallpublishprojects';
    
   $.getJSON(url,function(data){
       
        //------------код//
    };


но обнаружил, что если такой код вставить в обертку
$(document).ready
,
то он срабатывает сразу,оказалось что если dom загружен то повторно ничего не работает,что в принципе логично,

Тогда по логике,
если код вытащить из $(document).ready, во так


$('#project_list').ready(function(){

    var rez='';
    var url= 'index.php?r=site%2Fgetallpublishprojects';
    
   $.getJSON(url,function(data){
       
        //------------код//
    };

$(document).ready({  //------------код//});

то все должно работать,я сейчас для примера так и сделал

но во такой код

$('#project_list').ready(function(){(alert('ready!')});
почему то срабатывает везде,причем если я вместо
#project_list
,напишу любой тег ,которого нет в DOM, все равно alert выводит сообщение.

Как можно реализовать выполнения кода только при загрузки определенных элементов?
Ответ: СпасибО!
Вопрос: $(document).ready(function(){

Почему после fun9() другие функции не работают ???????
$(document).ready(function(){
	fun1();
	fun2();
	fun3();
	fun4();
	fun5();
	fun6();
	fun7();
	fun8();
	fun9();
	fun10();
	fun11();
	fun12();
	fun13();
});
Ответ:
Сообщение от rustoke
Не вызываются!
Тогда, как советовали ранее
Сообщение от Skipp
Читайте лог, там всё написано
Как вариант, там какая-то ошибка...
Вопрос: Что лучше выбрать defer или $(document).ready

Оба метода гарантируют что скрипт загрузится только после того когда загрузится весь html документ. Какая между ними разница кроме той, что $(document).ready пишется в js файле, а defer в атрибуде?
Ответ:
Сообщение от Aqua77
Почему так ведь defer подразумевает сперва загружать содержимое страницы и только потом скрипт?
Ты же заявлял о каких то гарантиях)) вот тебе и разница defer ничего не гарантирует оказывается в твоем случае) еще и alert в хроме который там работает вопреки здравому смыслу) нашел чем проверять асинхронность))
Вопрос: Центрирование карты Yandex API с использованием функции геокодера

Здравствуйте, есть например код для вывода меток на карте по координатам.


ymaps.ready(init);

    
    function init() {
        var myMap = new ymaps.Map("map", {
                center: [55.76, 37.64],
                zoom: 5,
    		controls: []
            }, {
                searchControlProvider: 'yandex#search'
            });
    	
    	myMap.controls.add('zoomControl');
    	
        myMap.geoObjects
           
            .add(new ymaps.Placemark([55.753215, 37.622504], {
                balloonContent: '<strong>Москва</strong>'
            }, {
                preset: 'islands#icon',
                iconColor: '#0095b6'
            }))
    .add(new ymaps.Placemark([59.939095, 30.315868], {
                balloonContent: '<strong>Санкт-Петербург</strong>'
            }, {
                preset: 'islands#icon',
                iconColor: '#0095b6'
            }))	
    	   .add(new ymaps.Placemark([54.513845, 36.261215], {
                balloonContent: '<strong>Калуга</strong>'
            }, {
                preset: 'islands#icon',
                iconColor: '#0095b6'
            }))
    	
    	 .add(new ymaps.Placemark([52.970371, 36.063837], {
                balloonContent: '<strong>Орёл</strong>'
            }, {
                preset: 'islands#icon',
                iconColor: '#0095b6'
            }))	
    	
    	
    }



Хотелось бы центрировать карту для местоположения пользовтеля на основе данных геокодера. То есть я например ищу с помощью PHP и GeoIP город посетителя сайта и мне нужно на основе полученного города, например "Omsk" центрировать карту в городе Омск. Я так понял это можно сделать на основе геокодера.


Один только вопрос, куда и главное КАК в моём коде вставить значение переменной coords полученной из результатов выполнения этой функции:


function init() {
        var myMap = new ymaps.Map('map', {
            center: [55.753994, 37.622093],
            zoom: 9
        });

        // Поиск координат центра Нижнего Новгорода.
        ymaps.geocode('omsk', {
            /**
             * Опции запроса
             * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geocode.xml[/url]
             */
            // Сортировка результатов от центра окна карты.
            // boundedBy: myMap.getBounds(),
            // strictBounds: true,
            // Вместе с опцией boundedBy будет искать строго внутри области, указанной в boundedBy.
            // Если нужен только один результат, экономим трафик пользователей.
            results: 1
        }).then(function (res) {
                // Выбираем первый результат геокодирования.
                var firstGeoObject = res.geoObjects.get(0),
                    // Координаты геообъекта.
                    coords = firstGeoObject.geometry.getCoordinates(),
                    // Область видимости геообъекта.
                    bounds = firstGeoObject.properties.get('boundedBy');
    				
                firstGeoObject.options.set('preset', 'islands#darkBlueDotIconWithCaption');
                // Получаем строку с адресом и выводим в иконке геообъекта.
                firstGeoObject.properties.set('iconCaption', firstGeoObject.getAddressLine());

                // Добавляем первый найденный геообъект на карту.
                myMap.geoObjects.add(firstGeoObject);
    		
    			//myMap.setCenter([60.629499,56.800015], 10);
                // Масштабируем карту на область видимости геообъекта.
                myMap.setBounds(bounds, {
                    // Проверяем наличие тайлов на данном масштабе.
                    checkZoomRange: true
    				
                });
    		

    			

    		


                /**
                 * Все данные в виде javascript-объекта.
                 */
                console.log('Все данные геообъекта: ', firstGeoObject.properties.getAll());
                /**
                 * Метаданные запроса и ответа геокодера.
                 * @see [url]https://api.yandex.ru/maps/doc/geocoder/desc/reference/GeocoderResponseMetaData.xml[/url]
                 */
                console.log('Метаданные ответа геокодера: ', res.metaData);
                /**
                 * Метаданные геокодера, возвращаемые для найденного объекта.
                 * @see [url]https://api.yandex.ru/maps/doc/geocoder/desc/reference/GeocoderMetaData.xml[/url]
                 */
                console.log('Метаданные геокодера: ', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData'));
                /**
                 * Точность ответа (precision) возвращается только для домов.
                 * @see [url]https://api.yandex.ru/maps/doc/geocoder/desc/reference/precision.xml[/url]
                 */
                console.log('precision', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.precision'));
                /**
                 * Тип найденного объекта (kind).
                 * @see [url]https://api.yandex.ru/maps/doc/geocoder/desc/reference/kind.xml[/url]
                 */
                console.log('Тип геообъекта: %s', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.kind'));
                console.log('Название объекта: %s', firstGeoObject.properties.get('name'));
                console.log('Описание объекта: %s', firstGeoObject.properties.get('description'));
                console.log('Полное описание объекта: %s', firstGeoObject.properties.get('text'));
                /**
                * Прямые методы для работы с результатами геокодирования.
                * @see [url]https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeocodeResult-docpage/#getAddressLine[/url]
                */
                console.log('\nГосударство: %s', firstGeoObject.getCountry());
                console.log('Населенный пункт: %s', firstGeoObject.getLocalities().join(', '));
                console.log('Адрес объекта: %s', firstGeoObject.getAddressLine());
                console.log('Наименование здания: %s', firstGeoObject.getPremise() || '-');
                console.log('Номер здания: %s', firstGeoObject.getPremiseNumber() || '-');

                /**
                 * Если нужно добавить по найденным геокодером координатам метку со своими стилями и контентом балуна, создаем новую метку по координатам найденной и добавляем ее на карту вместо найденной.
                 */
                /**
                 var myPlacemark = new ymaps.Placemark(coords, {
                 iconContent: 'моя метка',
                 balloonContent: 'Содержимое балуна <strong>моей метки</strong>'
                 }, {
                 preset: 'islands#violetStretchyIcon'
                 });

                 myMap.geoObjects.add(myPlacemark);
                 */
            });
    }
Ответ: имхо, правильнее бы создать карту после получения результата геокодера, сразу с нормальными координатами. Так мы быстрее приедем куда надо, не засоряя сеть получением тайлов для окрестностей [55.76, 37.64]
Вопрос: использование для $() два значения

использую js для добавления класса элементу к которому перехожу по клику по ссылке с классом map-link, опыту мало как можно использовать данный js для перехода с area и a сразу? попробовал использовать js с подменной $('a.map-link') на ('area') , добавил созданный js к другим, все перестало работать. Опыта мало, посоветуйте как поправить js, заранее спасибо за ответы.

(function ($) {
			$(document).ready(function myfunction() {
				   $('a.map-link').click(function(e) {
					var clickId = $(this).attr('href');
					$('tr'+clickId).addClass('success').siblings().removeClass('success');
					var target = $(this).attr('href');
					$('html, body').animate({scrollTop: $(target).offset().top - 100 }, 800);
					return false;
				});
			});
		})(jQuery);
Ответ:
(function ($) {
                        $(document).ready(function () {
                                   $('a[href*=#row], area').click(function(e) {
                                        var clickId = $(this).attr('href');
                                        $('tr'+clickId).addClass('success').sib$
                                        var target = $(this).attr('href');
                                        $('html, body').animate({scrollTop: $(t$
                                        return false;
                                });
                        });
                })(jQuery);


сделал так, можете проверить ошибок надеюсь не сделал.
Вопрос: использование радиокнопок

мне нужно сделать вроде небольшого математического задачника-тестов используя радиокнопки, в качестве вариантов ответа...
вывести на экран уравнение или другие вычисляемые матем.выражения, например :

и чтоб на радиокнопках в итоге отображался на одной правильный ответ, на другой - неправильный..и потом из них выбрать одно и вывести соответствущее сообщение : верно или нет.. в общем с теорией, практикой тем более я знакомлюсь потихоньку, как истинная блондинка и появился вопрос..
вопрос в том, как правильно записать радиокнопку: можно ли ей присвоить значение, вычисляемое в самих скриптах?
уравнение ведь именно там будет решаться.., x именно там просчитается..

а как мне правильно записать эту кнопку, чтоб ей вычисляемое значение присвоить, какой метод, объект нужно для этого использовать?не пойму(((туплю что-то...
нуб конкретный....
пытаюсь понять на простом примере, где y=3+7 :
конечно, особо ничего еще нет в плане кода..я только пытаюсь разобраться... ну как-то так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<HTML>
<HEAD>
<title>Порешаем задачки??</title>
</HEAD>
<BODY>
 
<SCRIPT>
  var a=3; 
  var b=7;
  var y=3+7;/правильный ответ
  var s=y-1;/неправильный ответ
  
  document.write(a+"+"+b+"=");
 
 /var RADIO = document.getElementById("one");RADIO.VALUE=y; какой метод ИСПОЛЬЗОВАТЬ???
     
 }
   
  
</SCRIPT>
 
<FORM NAME="Test1">
    
    <br><INPUT TYPE="RADIO" ID="one" NAME="zadacha1" VALUE ="one" ONCLICK='otvet'>y</br> 
        <INPUT TYPE="RADIO"  NAME="zadacha1" VALUE ="two"ONCLICK='otvet'>s</br>
    
</FORM>
 
</BODY>
</HTML>
прошу не судить строго, а подсказочкам, помощи буду рада...
ктото про радиокнопки писал недавно.. ну я там ничего не поняла. поэтому я к вам...
Ответ: у радиокнопки <input type="radio"> НЕТ свойств, в которых можно что-то записать, чтобы это стало видно пользователю

обычно используют конструкцию <label><input type="radio"> текст, который виден пользователю</label>

заключение кнопки и текста в тег <label></label> облегчает пользователю чекинг радиокнопки -- не нужно целиться в центр маленького кружочка, можно кликнуть по любому месту текста

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

обычно при решении задачи создания тестов/анкет внутри тега <label></label> прописывают текст варианта ответа, а в свойстве value соответствующей радиокнопки указывают код правильного/неправильного ответа

пример HTML-кода блока двух вопросов некоего теста с вариантами ответов, из которых надо выбрать один правильный:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<style>
div {margin-top: 12px}
label:hover {color: teal}
</style>
 
<div>
   <p>1. В каком году Гагарин летал в космос?</p>
      <label><input type="radio" name="v0" value="0">в 1917</label><br>
      <label><input type="radio" name="v0" value="0">в 1941</label><br>
      <label><input type="radio" name="v0" value="1">в 1961</label>
</div>
 
<div>
   <p>2. Другом Чебурашки был?</p>
      <label><input type="radio" name="v1" value="0">Мальчик-с-пальчик</label><br>
      <label><input type="radio" name="v1" value="1">Крокодил Гена</label><br>
      <label><input type="radio" name="v1" value="0">полковник Исаев</label><br>
      <label><input type="radio" name="v1" value="0">Котёнок по имени Гав</label>
</div>
примечания:
-- одинаковые имена радиокнопок нужны для выбора единственного варианта ответа (и в этих именах "спрятан" порядковый номер вопроса v0 и v1)
-- у правильного варианта ответа прописано value="1"
-- у неверных вариантов прописано value="0"

--------------------------------

из примера кода видно, что при математически вычисляемых вопросах теста вполне можно этот HTML-код программно сгенерировать

но для этого необходимо заранее знать:

-- либо полный список этих "вычисляемых" вопросов, либо точную "маску" этих вопросов и их диапазон
-- критерий для вывода текстов неверных вариантов ответа
Вопрос: Присвоение строки без использования кавычек?

Доброго времени суток.
Код HTML5
1
<div onmousedown="this.setAttribute('onmousemove','alert();');" onmouseup="this.removeAttribute('onmousemove');"></div>
- Простой пример, у меня чуть сложнее) Написал вёрстку, всё работает. Проблема в том, что я пытаюсь реализовать шаблонную систему. Эту вёрскту мне нужно присвоить яваскрипт переменной, как строку.
Код Javascript
1
2
var temp='<div onmousedown="this.setAttribute('onmousemove','alert();');" onmouseup="this.removeAttribute('onmousemove');"></div>
';
Естественно, конфликт кавычек. Я понимаю, что можно экранировать кавычки, можно использовать спецсимволы хтмл, но кода довольно много. Есть ли способ скопировать вёрстку и вставить её как строку в переменную без использования кавычек вообще? Ну или какой-то способ есть, чтобы не пришлось перелапачивать всё и заменять " и ' на \' и &quot; соответственно? Наткнулся на <<<HTML какой-то, но ничего не понял =/ Как работает это чудо...
Ответ:
Сообщение от alexsamos33
button = document.getElementsByTagName("button");
for (var i = 0; i < button.length; i++) {
* * button[i].onclick = function() {
* * * * alert(this.outerHTML);
* * }
}
Интересно) Но не то. Я использую ещё "не законные" обработчики. Например, на div средствами яваскрипт происходит обработка onblur. Кажется в ie это давало ошибку
Код Javascript
1
div.onblur=function(){alert();}
, типа я пытаюсь установить не существующее свойство-аттрибут диву. Пожалуй самое правильное решение здесь - вынести все обработчики в яваскрипт и будет мне счастье без использования бубнов) Просто очень не хотелось переворачивать весь код, но жизнь - она не для слабаков) Спасибо!
Вопрос: Что дает использование сетки Бутстрапа

Ведь даже если элементам задать margin в процентах плюс ширину в процентах,то элементы перемещаются соотвественно с уменьшением экрана.

То в чем тогда соль использования сетки,если элементы адаптируются даже при задания процентных значений вышеупомянутым свойствам?


Чем раньше пользовались вебмастера для адаптации страниц,когда даже не существовало такого термина как сетка?
Ответ: Фреймворки повышают скорость и удобство. Сетка служит для правильного размещения элементов на странице, чтобы оно все не разваливалось и было именно там, где нужно. Давайте назовем ее каркасом или скелетом страницы, может так понятней будет
А адаптировать или не адаптировать сетку, вопрос уже второстепенный и индивидуальный.

Добавлено через 14 минут
Сообщение от TVPNERO
то есть сетка просто повышает скорость и удобство адаптации и все?
Если после слова "сетка" добавить "bootstrap", тогда да. А что вы еще хотели?
Вопрос: $(document).ready не работает

Добрых времени суток. Есть функция:
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
    var set_property = function(){
        $("#wrap").css("height", $(window).innerHeight());
        $("#wrap").css("width", $(window).innerWidth());
        $("#wrap").css("marginTop", -$("#wrap").height()/2);
        $("#wrap").css("marginLeft", -$("#wrap").width()/2);
    };
 
    $(window).resize(set_property);
    set_property();
});
Но она срабатывает только после ресайза страницы, а не перед загрузкой. Почему так?
Ответ: У меня все сработало.
Блок wrap ушел верх и влево ровно на половину своих высоты и ширины сразу по загрузке страницы.
Вопрос: Как разобраться с ошибка Uncaught TypeError: jQuery(.).ready(.) is not a function

Помогите разобраться новичку с ошибкой

<script type="text/javascript">
jQuery(document).ready(function($) {
var url=document.location.href;
$.each($(".moduletable_vmenu a"),function(){
if(this.href==url){$(this).addClass('activeCSS');};
});
})(jQuery); - ошибку пишет тут
</script>
Ответ:
Сообщение от PollyDaddy
не могу со скобками разобраться


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
(function($) {
 
  $(document).ready(function() {
    var url = document.location.href;
    $.each($(".moduletable_vmenu a"), function() {
      if (this.href == url) {
        $(this).addClass('activeCSS');
      };
    });
  });
 
})(jQuery);