Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Многократная подгрузка скриптов (https://javascript.ru/forum/jquery/47005-mnogokratnaya-podgruzka-skriptov.html)

jk888 04.05.2014 16:29

Многократная подгрузка скриптов
 
Допустим, у нас есть такие скрипты:

index.php
<?php
echo "
	<script src='jquery-1.11.0.js'></script>
	<script src='work.js'></script>
	<a href='' class='href1'>HREF</a><br><br>
	<a href='' class='hrefPlus'>HREF PLUS</a><br><br>
	<div class='toLoad'></div>
";
?>


work.js
$(document).ready(function(){
$('.href1').click(function(){
	console.log('href1');
	return false;
	});
$('.hrefPlus').click(function(){
	$('.toLoad').load('get.php');
	console.log('hrefPlus');
	return false;
	});
$('.href2').click(function(){
	console.log('href2');
	return false;
	});
});


get.php
<?php
echo "
	<a href='' class='href2'>HREF 2</a><br><br>
	<script src='work.js'></script>
";
?>


Так вот, если в get.php не добавить строчку <script src='work.js'></script>, то HREF 2 появившись в toLoad не работает как надо.

Вопрос в том, если work.js будет большого размера, и подгружаться через get.php может много раз (от перезагрузки до перезагрузки страницы), то не повлияет ли это на... на что-то же это наверное должно повлиять?

Кажется, что это как-то неправильно. Может быть есть другой способ?

рони 04.05.2014 17:05

Цитата:

Сообщение от jk888
$('.href2').click

клик вам надо ставить на элемент который неподгружается а не на $('.href2'). -- используйте on -- $('body').on('click', '.href2', function(){}) тогда ненужна многократная подгрузка

jk888 04.05.2014 18:36

Спасибо.

В том примере который я указал, теперь с on() все работает правильно, но вот там, где мне надо это применить, нет.

У меня там дивы со ссылкми (которые должен ловить on()) добавляются не просто через лоад, а вот так

function reloadDir(idTov) {
$.get('?wr=reloadDir&id='+idTov,function(data){
	$('a[name^="dir"]').each(function(i){
		var num = $(this).attr('name').replace('dir','');
		if (num == idTov) $(this).html(data);
		});
	});
}


Может ли такой способ быть проблемой?


На существующие и вновь добавленные дивы ранее стоял ховер, теперь я поменял его на $('body').on('mouseenter'... и все осталось как было до переделки на on(), но вот клик, что-то теперь никак не ловится.

рони 04.05.2014 19:23

jk888,
информации недостаточно.
и где click в вашем коде?
об остальном нужно догадаться?

jk888 04.05.2014 19:25

Видимо дело было в маршруте.
Там где раньше работало $(".admRed a").click(function(){
пришлось сделать так $('.toLoad').on('click', 'table.admRed tr td a', function(){


Часовой пояс GMT +3, время: 07:45.