Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / работа с jquery load / 7 сообщений из 7, страница 1 из 1
12.06.2016, 10:55
    #39254904
jemoje
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
скрипт работает с this.getAttribute('data-type')

при подгрузке файла через jquery load
$('#content').empty().load('file.html', function() {});

на него не распространяется работа скрипта this.getAttribute('data-type')

как лечиться, кроме то метода что в каждый подгружаемый файл вставлять эту функцию
...
Рейтинг: 0 / 0
12.06.2016, 11:07
    #39254906
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
jemoje, проблема не понятна, приведите тестовый пример, где она воспроизводится.
...
Рейтинг: 0 / 0
12.06.2016, 11:14
    #39254907
jemoje
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
<div data-type="zxa">abc</div>

выполняю замену, всех где есть data-type
Код: javascript
1.
2.
3.
$('[data-type]').each(function(){
	$(this).text($(this).attr('data-type'));
});



далее меняю контент
Код: javascript
1.
$('#content').empty().load('file.html', function() {});



и вот внутри этого файла file.html тоже такие элементы с data-type но замены не происходит
...
Рейтинг: 0 / 0
12.06.2016, 11:16
    #39254908
jemoje
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
пока писал дошло что можно подсадить в загрузку контента эту функцию
Код: javascript
1.
2.
3.
4.
5.
$('#content').empty().load('file.html', function() {
$('[data-type]').each(function(){
	$(this).text($(this).attr('data-type'));
});
});



возможно есть ещё варианты?
...
Рейтинг: 0 / 0
12.06.2016, 11:28
    #39254910
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
Предположу, что метод this.getAttribute('data-type') вызывается при обработке какого-то события, произошедшего с каким-то элементом внутри контейнера с идентификатором #content .

Типа такого:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE html>
<html>
<body>
  <div id="content">
    <input data-type="string" onchange="onInputChange(this)" type="text"/>
  </div>
  <script>
    function onInputChange(sender) {
      alert(sender.getAttribute('data-type'));
    }
  </script>
</body>
</html>


В этом случае при вызове $('#content').empty().load('file.html', function() {}); слетит подписка на событие onchange и перестанет вызываться обработчик onInputChange .

Решается проблема делегированием . В jQuery для этого есть метод .on() .
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE html>
<html>
<head>
  <script data-require="jquery" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>
  <div id="content">
    <input data-type="string" type="text"/>
  </div>
  <script>
    $('#content').on('change', 'input', function() { onInputChange($(this)); });
  
    function onInputChange(sender) {
      alert(sender.data('type'));
    }
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
12.06.2016, 11:29
    #39254911
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
jemojeпока писал дошло что можно подсадить в загрузку контента эту функцию
Код: javascript
1.
2.
3.
4.
5.
$('#content').empty().load('file.html', function() {
$('[data-type]').each(function(){
	$(this).text($(this).attr('data-type'));
});
});



возможно есть ещё варианты?
Возможно есть :) Вы объяснити, что сделать-то пытаетесь?
...
Рейтинг: 0 / 0
12.06.2016, 11:34
    #39254912
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с jquery load
jemoje<div data-type="zxa">abc</div>

выполняю замену, всех где есть data-type
Код: javascript
1.
2.
3.
$('[data-type]').each(function(){
	$(this).text($(this).attr('data-type'));
});



далее меняю контент
Код: javascript
1.
$('#content').empty().load('file.html', function() {});



и вот внутри этого файла file.html тоже такие элементы с data-type но замены не происходит
Метод .load() асинхронно подгружает данные с сервера.

То есть если Вы тупо после него вставите свой код замены, то он выполнится раньше, чем данные придут от сервера и будут вставлены в контейнер.
Поэтому да, код замены должен вызываться в колбек функции complete (смотрите документацию по методу .load()).
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / работа с jquery load / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]