Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопросы по jQuery

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Открыть новую тему     Написать ответ в эту тему

Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Фильтр по слову "jquery" не дал какой-либо общей темы по этой библиотеке, поэтому решился создать. У меня возник такой вопрос: согласно справочной документации такой код:
 

Код:
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <p>4</p>
 
  <script language="javascript">
      $("p")[0].html("test");
  </script>

 
должен <p>1</p> заменить на <p>test</p>. Но не работает. Пробовал еще так:
 

Код:
$("p").get(0).html("test");

 
Есть подозрения, что мануал, по которому осваиваю библиотеку, написан для более старой версии, а позже принцип обращения к конкретному элементу из коллекции как-то изменился. Кто знает, как реализовать это (версия библиотеки - v1.3.2)



Документация по jQuery - eng, рус

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 16:22 11-08-2009 | Исправлено: Cheery, 07:35 09-08-2013
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
  // start all the timers
  $('.timer').on('startTimer', function() {  
  count.call($(this));  
});  

не срабатывает, потому что триггер запускается до привязки этого события.
сначала цепляем обработку события, потом код запускающий счетчики.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 21:06 30-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Сразу два вопроса тогда: как это сделать на примере (плиз)? и почему после Вашего ответа всё работало, а сейчас никак не хочет?

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 21:10 30-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
как это сделать на примере (плиз)?

порядок поменять, сначала одно, потом другое.
 

Цитата:
и почему после Вашего ответа всё работало, а сейчас никак не хоче

потому что там скролл был и .appear срабатывало не сразу

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 21:11 30-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ!
Не знаю, насколько этого хватит, но сделал сейчас так:

Код:
$('.timer').each(count);
 
  $('.timer').on('startTimer', function() {
    count.call($(this));

теперь работает.
 
А вот пример с оф.страницы:

Код:
$('#foo').appear(function() {
  $(this).text('Hello world');
},{accX: 50, accY: 100});

не работает, или я снова не так всё делаю. А если в самом файле плагина поставить число (чтобы был offset), то работает, но так, скорее всего, просто не правильно делать.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 21:18 30-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
$('.timer').each(count);  

?? не хотите думать, делайте как хотите.
я же по русски объяснил - сначала цепляем обработку события startTimer, а потом уже используем .appear, чтобы он не сработал ДО того как, как прицеплен обработчик нужного события.
 

Цитата:
не работает, или я снова не так всё делаю.

.appear не будет работать, когда используете .each(count), потому что счетчики сразу запускаются.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 21:20 30-05-2019 | Исправлено: Mavrikii, 21:21 30-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Честно говоря, я писал ранее, что JS даётся с трудом. Делать так, как выше написал, или наоборот

Код:
  $('.timer').on('startTimer', function() {
    count.call($(this));
    });
    $('.timer').each(count);

счёт срабатывает только при скроллинге, но в первом варианте он срабатывает за несколько пикселей до счётчика.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 21:30 30-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
  $('.timer').each(count);

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

Код:
$('.timer').on('startTimer', function() {  
  count.call($(this));  
});

а затем уже код, который будет запускать это событие

Код:
$('.wrapper').appear(function() {    
     $('.timer', this).trigger('startTimer');    
});  

когда наоборот, то startTimer инициируется когда еще нет его обработчика.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 21:32 30-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо! Но у меня используется два разных файла, сам counter.js с кодом счётчика и маленький файл с таким кодом:

Код:
$(document).ready(function() {  
     
    $('.wrapper').appear(function() {    
        $('.timer', this).trigger('startTimer');
    });  
 
});

 
И это прописано в counter.js:

Код:
  $('.timer').on('startTimer', function() {  
    count.call($(this));  
    });  

 
Хотя, если делать как Вы написали, то второй файл не нужен.
 
Добавлено:
Mavrikii
Я правильно понимаю, что что-то наподобие delay там не предусмотрено?

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 21:36 30-05-2019 | Исправлено: WONDROUS, 21:44 30-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И ещё в дополнение к предыдущему вопросу. В этом счётчике почему-то сотые через точку округляются и показывается целое число. Каким кодом можно сделать так, чтобы можно было вводить числа (цифры) с десятичными или сотыми и они показывались нормально? Или, например, вводя 12345, decimals показывало не 12345.0, а 1234.5? Или там надо много править?
Просто читал на нескольких ресурсах и смотрел примеры на том же кодпен, и если я правильно понял, то отвечает за это код в строке 86 во вкладке JS.

Хотя, с этим вроде разобрался, вместо options.decimals ставится необходимая цифра.
 
А на счёт delay вопрос остался.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 17:08 31-05-2019 | Исправлено: WONDROUS, 22:27 31-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
А на счёт delay вопрос остался.

не нужно там никакого delay, нужно делать именно так, как я вам сказал.
для аналога delay используется setTimeout, но оно тут не нужно.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 22:34 31-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Понятно, спасибо.
 
Сейчас обнаружилась такая ошибка (ссылается на appear.js):
 
   
 
Появляется она после добавления сотых чисел после точки. На работу это не влияет, но в инспекторе ошибку показывает. Правда, ошибку показывает только после добавления числа, а если сохранить проект и потом снова открыть, то всё нормально, ошибок нет.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 22:53 31-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS
без живого кода сказать ничего не могу.
какая то проблема с
Цитата:
var check = function() {

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 22:59 31-05-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Но это ведь вроде не после добавления того кода в counter.js? И что интересно, это только в одном проекте показывало эту ошибку.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 23:26 31-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
Но это ведь вроде не после добавления того кода в counter.js?

повторюсь - я не хочу заниматься гаданием и тратить на это время.
на живом примере проблему найти - пара минут.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 00:24 01-06-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
В том и вопрос, что та ошибка не везде и не всегда появляется. Даже в том же самом проекте попробовал сейчас, то есть ошибка, то нет. Ссылка на страницу, но ошибки не было.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 00:40 01-06-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что может быть не так в этом коде (для анимации прогресс бара), если при его наличие глючит меню в Foundation? Глюк в виде того, что в меню на одностраничном сайте всегда пункт остаётся активным (подсвечивается), какой бы раздел не был открыт. А подсвечивается, показывается активным, пункт с этими прогресс барами.
Код:

Код:
$(function() {
     
    var $meters = $(".progress > span");
    var $section = $('.meter');
    var $queue = $({});
     
    function loadDaBars() {
        $meters.each(function() {
            var $el = $(this);
            var origWidth = $el.width();
            $el.width(0);
            $queue.queue(function(next) {
                $el.animate({width: origWidth}, 1200, next);
            });
        });
    }
     
    $(document).bind('scroll', function(ev) {
        var scrollOffset = $(document).scrollTop();
        var containerOffset = $section.offset().top - window.innerHeight;
        if (scrollOffset > containerOffset) {
            loadDaBars();
            // unbind event not to load scrolsl again
            $(document).unbind('scroll');
        }
    });
     
});

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 20:26 23-06-2019 | Исправлено: WONDROUS, 20:29 23-06-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
$(document).unbind('scroll');  

удаляет все обработчики события scroll, видимо и от меню тоже.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 20:34 23-06-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Я на это и подумал, но без этой строки анимация косячет: сначала прогресс движется вправо, а потом обратно прячется (туда-сюда).

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 20:46 23-06-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
но без этой строки анимация косячет

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

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 20:48 23-06-2019 | Исправлено: Mavrikii, 20:50 23-06-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Читал Ваш ответ, но без знания JS не найду ответ.
Искал в инете ещё варианты анимации для прогресс бара для Foundation, но так и не понял, но или не работают (для другой версии), или работают, но не так.

Всего записей: 3346 | Зарегистр. 30-06-2002 | Отправлено: 18:33 27-06-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопросы по jQuery


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru