Переменная в качестве 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');};
};
});
|
Цитата:
$('#tarea2 input[id=*!*'+this.id+'*/!*]')
|
Получилось!! Огромнейшее спасибо, walik! Очень выручил..
|
Цитата:
$("#tarea2 label[for="+newid+"]").empty();
Какие кавычки открываете, те же и закрываете. В вашем случае:
$("#tarea2 label[for='+newid+']").empty();
Ошибка что Вы открыли двойными кавычками, а закрываете одинарными. |
Спасибо, разобрался!!
По ходу работы появился еще вопрос. Как сделать чекбокс, который при клике на себя - удаляется (скрывается)? Сначала сделал так:
$('#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();
};
но увы, не работает =( Подскажите, что не так? И как можно реализовать задачу? |
Цитата:
типа:
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 (если используются) при клонирование, что бы они не повторялись. |
Сделал по вашему аналогу - с небольшими правками под свой код - всё получилось! Спасибо!
|
Не много не в тему но вопрос про 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> Помогите разобраться. |
| Часовой пояс GMT +3, время: 15:34. |