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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Bu

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
есть просто target.

Всего записей: 79 | Зарегистр. 08-10-2001 | Отправлено: 12:20 24-01-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bu
Я уже удалил пост. После "теста" понял, что я проперся в том, что сами объекты просматривались после вывода обоих объектов. Но походу для страницы в одно время может существовать только один такой объект. Поэтому во время просмотра оба Event-объекта являлись ссылками на один и тот же (последний) Event-объект.
Понял после вывода в консоли не объектов, а их свойства currentTarget. И они были разные.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 12:34 24-01-2015
yesitis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос ЗАКРЫТ (решён)
 
В Opera 12 и Opera 2X (со "Scripter") пользовался следующим xx.js:  

Код:
(function(){
document.addEventListener('DOMContentLoaded', function(){
var re = /Гадюкин|Бякин|Zabijakin/;
var a = document.querySelectorAll('.user');
for (var i = 0; i < a.length; i++) {
if (re.test(a[i].innerText)) {
a[i].parentNode.parentNode.setAttribute('style', 'display: none');
}}}, false);
})();

Это приспособленный к конкретной структуре скрипт Comments Cleaner. Он находит class="user" и, при обнаружении ников из списка re, делает невидимыми камент ника из этого списка и ветку (подветку), начатую этим ником.  
Теперь попробовал использовать с Firefox с Greasemonkey (последние версии), xx.user.js, и никак.  
Прошу помочь.

Всего записей: 30 | Зарегистр. 02-06-2014 | Отправлено: 22:21 13-02-2015 | Исправлено: yesitis, 07:05 15-02-2015
Mavrikii

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

Цитата:
с Firefox с Greasemonkey (последние версии),

Расширения для Firefox (Mozilla Firefox Extensions)
ps: в этом коде нет ни строчки с jQuery

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 22:33 13-02-2015 | Исправлено: Mavrikii, 22:33 13-02-2015
yesitis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, там тоже не знают.  
 
Вопрос закрыт (решён)

Всего записей: 30 | Зарегистр. 02-06-2014 | Отправлено: 22:52 13-02-2015 | Исправлено: yesitis, 07:21 15-02-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
непонятки.
Есть к примеру такой код:

Код:
<ul id="one" class="level-1">
  <li class="item-i">I</li>
  <li id="ii" class="item-ii">II
    <ul class="level-2">
      <li class="item-a">A</li>
      <li class="item-b">B
        <ul class="level-3">
          <li class="item-1">1</li>
          <li class="item-2">2</li>
          <li class="item-3">3</li>
        </ul>
      </li>
      <li class="item-c">C</li>
    </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

Почему при таком

Код:
var index = $( "li" ).index($( ".item-a" ));

возвращает правильное значение 2.
А при таком:

Код:
var index = $( "li" ).index(".item-a" );

-1 ?
 
P.S.
jquery v2.1.3/1.11.2

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 16:16 15-04-2015
Mavrikii

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

Цитата:
возвращает правильное значение 2.

потому, что тут он ищет объект $( ".item-a" ) в списке
Цитата:
$( "li" )


Цитата:
А при таком:  

а при таком ищет индекс первого
Цитата:
$( "li" )
в выборке
Цитата:
".item-a"

 

Цитата:
If .index() is called on a collection of elements and a DOM element or jQuery object is passed in, .index() returns an integer indicating the position of the passed element relative to the original collection.
 
If a selector string is passed as an argument, .index() returns an integer indicating the position of the first element within the jQuery object relative to the elements matched by the selector. If the element is not found, .index() will return -1.

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 19:38 15-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кажется понял.  
т.е.

Код:
$( "li" ).index(".item-a" )

это тоже самое, что

Код:
$( ".item-a" ).index( $( "li" ).eq(0) )

?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 20:30 15-04-2015
Mavrikii

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

Цитата:
это тоже самое, что  

да

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 20:48 15-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. В jQuery есть методы для доступа к списку обработчиков событий, присоединенных к какому-либо элементу?
2. Если на какой-либо элемент несколько раз устанавливаются одни и те же обработчики, то фактически обработчиков будет несколько или только один?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 03:30 17-05-2015
Mavrikii

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

Цитата:
Если на какой-либо элемент несколько раз устанавливаются одни и те же обработчики, то фактически обработчиков будет несколько или только один?

смотря как устанавливаются. если по "глупому", через .onclick, то один.
если через jquery или как "слушатели", то сколько угодно.
выполняться будут в том порядке, в котором "прицепили".
 

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

не так все просто. если для отладки - панель разработчика показывает их.
 
можно через $._data(DOMelement, "events");, но настоятельно не рекомендуется, так как это ковыряение во внутренней структуре jQuery, которая может измениться.
 
http://jsfiddle.net/1stcsk5m/

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 04:14 17-05-2015
unreal666



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

Цитата:
смотря как устанавливаются


Код:
$node.on(...)


Цитата:
если через jquery или как "слушатели", то сколько угодно.

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

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 04:31 17-05-2015
Mavrikii

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

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

что мешает прицепить .data атрибует элементу? проще простого
$(el).data('has_listener', true);

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 04:47 17-05-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
да думал об этом. Но хранить мне тогда придется в подобном виде:

Код:
$('body').data('нужный_селектор', {'events1': handler, 'events2': handler});

т.к. обработчики вешаются не на сами элементы, т.к. их слишком много.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 06:01 17-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
цель всего этого?  
 
jquery позволяет использовать и собственные события.
 
к примеру - $(el).on('my.click', function ... );
правда при этом их нужно вызывать самостоятельно через $(el).trigger('my.click');

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 07:18 17-05-2015
unreal666



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

Цитата:
цель всего этого?

эм. Вызов обработчика по событию
Просто раньше у меня эти события вешались на каждый такой элемент. Сейчас решил повесить на более общий элемент, чтобы не было кучи обработчиков. Но это вешание у меня происходит в цикле для каждого из этих целевых элементов, поэтому нужно было перед вешанием события на глобальный элемент проверять, не повешано ли уже это событие.
 
ЗЫ.
Это у меня делается в гибриде highlight.js (собственно подсветка) + SyntaxHighlighter (обвязка типа тулбара и еще чего-то там) + кое-что от себя.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 11:30 17-05-2015 | Исправлено: unreal666, 11:30 17-05-2015
sunduk4

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
Подскажите, пожалуйста, как реализовать показ и скрытие таблиц jQuery по нажатию на пункты меню. Интересует сам принцип.  
Перехожу с оффлайн-разработки потихоньку - там все понятно, создал экземпляр класса, убил его же, а тут какой-то ступор..
Если сумбурно объяснил, задача проста - обычная база данных, нажал на пункт меню - открылся список документов, выбрал документ, открыл на редактирование и т.п. В части доступа к данным и навигации разобрался.

Всего записей: 177 | Зарегистр. 03-04-2004 | Отправлено: 06:46 23-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sunduk4
либо грузите все сразу, но не показываете и по нажатию отображаете что нужно.
либо по нажатию грузите с сервера что нужно обновляя страницу (для этого jquery и не нужен), либо с помощью ajax запроса

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 07:07 23-07-2015
sunduk4

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
через стили? display/visiblity?
если грузить с сервера, то убирать потом как? грубо говоря, мне "оконная система" в вебе не совсем понятна. хотелось бы, чтобы и список на заднем плане оставался, и формы редактирования поверх поднимались, и страничка чтобы не обновлялась при закрытии/открытии новых таблиц. Одним словом, в какую сторону копать?

Всего записей: 177 | Зарегистр. 03-04-2004 | Отправлено: 07:34 23-07-2015
Mavrikii

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

Цитата:
через стили? display/visiblity?

к примеру
 

Цитата:
 то убирать потом как?

что значит "убирать"? отправили обновленные данные, если есть, удалили/спрятали нод из DOM структуры и все

Всего записей: 15090 | Зарегистр. 20-09-2014 | Отправлено: 07:36 23-07-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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