Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2014, 14:36
Новичок на форуме
Отправить личное сообщение для kukush Посмотреть профиль Найти все сообщения от kukush
 
Регистрация: 10.02.2014
Сообщений: 3

Узнать, id списка
Добрый день.
есть список
<ol id="selectable">
<li class="of" id="00"></li>
<li class="of" id="01"></li>
<li class="of" id="02"></li>
...

тестовое поле
<input type="text" id="flag" size="40">


есть скрипт
$(document).ready(init);

function init(){
    $(function(){
	$('#selectable')
	    .bind("mousedown", function(e) {e.metaKey = true;})
		.bind("click", function () {$('.of').click(function() {txt=$('#flag').val(); $('#flag').val(txt + this.id);})})
	    .selectable();
    });
};


CSS
#selectable .ui-selecting,
#selectable .ui-state-default { background: #5384ae; }
#selectable .ui-selected { background: #5384ae; color: white; }
#selectable .ui-selected-true { background: #5384ae; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0;}
#selectable li { margin:1px; ;padding: 1.1px; float: left; width: 15px; height: 15px; font-size: .9em; text-align: center; background: #dfeffc; }

при каждом клике в текстовое поле должен быть записать id выбранного пункта li.
есть две проблемы:
1. сейчас записывается id столько раз, сколько я сделал кликов по пунктам. например, первый клик = одной записи, второй клик = двум записям и т.д.
2. вторая проблема если выбрать несколько пунктов одним кликом (перетаскивая мышь), id в текстовое поле вообще не пишутся, а должны попасть все.
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2014, 15:02
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kukush
$(document).ready(init);
 
function init(){
    $(function(){
Сам то понимаешь че пишешь? $(function(){}) - это алиас $(document).ready(). То есть ты, значит, пишешь:

$(document).ready(function(){$(document).ready(...)})

Про логику слыхал, не?
Сообщение от kukush
.bind("click", function () {$('.of').click(function() {txt=$('#flag').val(); $('#flag').val(txt + this.id);})})
Тут ты понимаешь че делаешь? При каждом клике вешаешь еще один обработчик клика. В итоге обработчики плодятся как тараканы. Кажется на это ты и жалуешься. Ну дык нафига тогда так пишешь?
И кстати, че эт ты в одном случае пишешь .bind('click'), а в другом .click() ?
И между прочим bind() устарел.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2014, 15:12
Новичок на форуме
Отправить личное сообщение для kukush Посмотреть профиль Найти все сообщения от kukush
 
Регистрация: 10.02.2014
Сообщений: 3

не досмотрел тут от старой попытки осталось.
Сообщение от kukush
$(document).ready(init);
 
function init(){
    $(function(){


на счет click и bind пока у меня по другому не получается реализовать...
я собственно и спросил как можно эту неправильную конструкцию изменить
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2014, 15:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

kukush,
пример подсчёта выделенных пунктов -- у человека целый плагин получился --
Класс выделения элементов. Нужна критика.
в этот код легко добавить вывод id
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2014, 15:28
Новичок на форуме
Отправить личное сообщение для kukush Посмотреть профиль Найти все сообщения от kukush
 
Регистрация: 10.02.2014
Сообщений: 3

спасибо, буду разбирать
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2014, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от рони
в этот код легко добавить вывод id

само выделение конечно с вопросами.
Ответить с цитированием
  #7 (permalink)  
Старый 17.02.2014, 04:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Цитата:
есть две проблемы:
Ровно 1. jquery. Нормальному человек никогда не понять этот бред на жиквери, но мучаясь от сознания собственной он все равно прёцца качать, ставить и писать на несусветном языке. В результате чего и.
Ответить с цитированием
  #8 (permalink)  
Старый 17.02.2014, 04:39
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Общая схема такова. В некий объект валятся ссылки на элементы после щелчков. После каждого скрипт должен попытаться найти такой элемент в объекте и, если такого нет - новый, добавить, отразить; если такой есть - ничего не добавлять, отражено.

Применительно к обычному массиву это было бы

var id = arr.indexOf(clicked.elem.id;
if(id<0)
  arr.push(clicked.elem.id)


Если кликнутый должен быть отозван продолжается

else
 arr.splice(id,1);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает скрипт отображения списка Konstantine Javascript под браузер 3 18.03.2013 06:00
самозакрывающееся меню в виде списка о_О dimitar Элементы интерфейса 4 20.03.2012 15:27
Динамическое добавление выпадающего списка В IE stepennwolf Internet Explorer 3 04.11.2011 17:36
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Sortable, два связанных списка. Как один из них сделать неизменяемым? kvecxjo jQuery 1 30.03.2010 03:15