Javascript.RU

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

Переменная в качестве ID элемента Input
Добрый день.

Опыта работы с Jquery немного, потому прошу помощи.
Делаю расширенный поиск. Задача: при клике на один из чекбоксов нижнего окна - выбранный чекбокс с текстом дублируется в верхнем окне. Вставить получилось. Выглядит это примерно так:
1) http://clip2net.com/clip/m0/13018049....png?nocache=1
2) http://clip2net.com/clip/m0/13018050....png?nocache=1

Теперь надо, что если тыкаешь на этот же выделенный чекбокс в нижмем окне, то из верхнего - удаляется. Никак не могу сообразить, как это сделать.
Пытался удалить чекбокс, фильтруя его по ID: $('#tarea2 input[id=this.id]').css('display','none');}; но в качестве параметра id походу нельзя использовать переменную или не так делаю. Если же задаю явно id чекбокса $('#tarea2 input[id="nomer ID"]') - то работает для этого чекбокса. Нужно именно как-то по параметру удалить.

Подскажите, если нетрудно, это можно как реализовать .. Может вообще не в ту сторону думаю?

На всякий случай, этот кусок кода полностью:
$(':checkbox').click(function(){
var checked=this.checked;
var elem=$(this).clone();
var textelem=$(this).parents('label:first').text();
if (checked) {
newid=this.id;
elem.attr('id',newid);
elem.appendTo('#tarea2'); 
$('#tarea2').append(textelem);
}
else {
var nameval=this.id;
if (newid=nameval) {$('#tarea2').append('ну ведь равны же!!');
$('#tarea2 input[id=this.id]').css('display','none');};
         
};
});

Последний раз редактировалось qwaker, 03.04.2011 в 08:44.
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2011, 10:25
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от qwaker
но в качестве параметра id походу нельзя использовать переменную или не так делаю.
$('#tarea2 input[id=this.id]')
Можно использовать, только кавычки закрывать надо. то есть так:
$('#tarea2 input[id=*!*'+this.id+'*/!*]')
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 03.04.2011, 10:39
Интересующийся
Отправить личное сообщение для qwaker Посмотреть профиль Найти все сообщения от qwaker
 
Регистрация: 03.04.2011
Сообщений: 23

Получилось!! Огромнейшее спасибо, walik! Очень выручил..
Ответить с цитированием
  #4 (permalink)  
Старый 03.04.2011, 13:53
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от qwaker
сли аттрибут for не указывать - удаляются, естесственно, все метки. А нужно удалить только ту, кторая для чекбокса с id='+newid+'.
Опять кавычки:
$("#tarea2 label[for="+newid+"]").empty();

Какие кавычки открываете, те же и закрываете.


В вашем случае:
$("#tarea2 label[for='+newid+']").empty();

Ошибка что Вы открыли двойными кавычками, а закрываете одинарными.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 03.04.2011 в 13:55.
Ответить с цитированием
  #5 (permalink)  
Старый 03.04.2011, 15:40
Интересующийся
Отправить личное сообщение для qwaker Посмотреть профиль Найти все сообщения от qwaker
 
Регистрация: 03.04.2011
Сообщений: 23

Спасибо, разобрался!!

По ходу работы появился еще вопрос.

Как сделать чекбокс, который при клике на себя - удаляется (скрывается)? Сначала сделал так:

$('#tarea2 :checkbox').click(function(){
$(this).css('display','none');
   $('#tarea2 label[for="'+this.id+'"]').empty();
});


Наверное, всё бы хороошо работало, если бы этот чекбокс создавался сразу при загрузке страницы, но он создается Jquery другой функцией и потому работает только если еще раз перезапустить скрипт, когда чекбоксы уже созданы.

$('#tarea :checkbox').click(function(){
var checked=this.checked;
var elem=$(this).clone();
        };


Попробовал также к чекбоксу, который должен появиться, добавить аттрибут onclick

elem.attr('onclick','fnclick()'); и прописал функцию function fnclick(){
    $(this).css('display','none');
    $('#tarea2 label[for="'+this.id+'"]').empty();
            };


но увы, не работает =( Подскажите, что не так? И как можно реализовать задачу?
Ответить с цитированием
  #6 (permalink)  
Старый 03.04.2011, 17:53
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от qwaker
var elem=$(this).clone();
После клонирования объекта вы должны же его еще добавить на страницу ?
типа:
var elem=$(this).clone().appendTo('body');


Ну а почему по onclick не работает сказать не могу, но воспользуетесь лучше свойством click();
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function fnclick() {
	alert('click');
}

$(document).ready(function() {
	$('#1').click(function() {
		var elem = $(this).clone();
		$(elem).click(fnclick);
		$(elem).attr('id', Math.floor(Math.random()*10000)); // случайный ID даем.
		$(document.body).append(elem);
	});
});
</script>
</head>
<body>
<input type="checkbox" id="1" />
</body>
</html>

Так же не забывайте менять ID (если используются) при клонирование, что бы они не повторялись.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 03.04.2011 в 17:57.
Ответить с цитированием
  #7 (permalink)  
Старый 03.04.2011, 19:40
Интересующийся
Отправить личное сообщение для qwaker Посмотреть профиль Найти все сообщения от qwaker
 
Регистрация: 03.04.2011
Сообщений: 23

Сделал по вашему аналогу - с небольшими правками под свой код - всё получилось! Спасибо!

Последний раз редактировалось qwaker, 03.04.2011 в 19:48.
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2011, 11:15
Аватар для Goliaf-RS
Новичок на форуме
Посмотреть профиль Найти все сообщения от Goliaf-RS
 
Регистрация: 02.03.2011
Сообщений: 4

Не много не в тему но вопрос про ID.
Создал простой скрипт по раскрытию скрытию divов с эфектом из jquery... Все работает, но появилась необходимость избавится от кучи ID которые приходится вбивать в каждый div. Соответственно для каждого diva разный id.

function exdiv(id)
{
if($(id).css('display')=='none')
{
$(id).animate({height: 'show'}, 750);
}
else
{
$(id).animate({height: 'hide'}, 750);
}
}

<div onclick="exdiv('#1'); return false;">
<div id="1" style="display: none;">Блок с ID 1...</div>
<div onclick="exdiv('#2'); return false;">
<div id="2" style="display: none;">Блок с ID 2...</div>


Можно ли как то изменить скрипт чтобы ID был универсален, т.е. для всех divов был один...
До этого у меня был скрипт который позволял так делать, но в нем я так и не смог разобраться, так и не понял где там этот универсальный ID прописывается...
Вот код скрипта с универсальным ID аля expandit(this):

var ns6=document.getElementById&&!document.all?1:0
var head="display:''"
var folder=''
function expandit(curobj)
{
folder=ns6?curobj.nextSibling.nextSibling.style:document.all[curobj.sourceIndex+1].style
if (folder.display=="none")
folder.display=""
else
folder.display="none"
}

<div onclick="expandit(this)">
<div style="display: none;">111</div>
<div onclick="expandit(this)">
<div style="display: none;">222</div>


Помогите разобраться.

Последний раз редактировалось Goliaf-RS, 08.04.2011 в 17:08.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбор данных в переменную и передача в неактивное поле input winchester7 Элементы интерфейса 10 19.02.2011 17:07
Переменная в качестве фильтра LTDmix jQuery 3 13.02.2011 00:01
Заполнение элемента INPUT вычисляемым значением shah Элементы интерфейса 1 29.07.2010 14:11
Копирование из одного input в другой input bar-boss Общие вопросы Javascript 7 08.04.2008 19:10
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55