Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблемы с jquery (https://javascript.ru/forum/misc/38099-problemy-s-jquery.html)

zaytsewa 19.05.2013 10:36

Проблемы с jquery
 
Всем привет! Вопрос по jquery.
parent.find(".area_edit").hide();

тут несколько объектов, именно 2 штуки
так тоже не работает
var objs = parent.find(".area_edit");//.hide();
	for ( var i = 0; i < objs.length; ++i )
		$(objs[i]).hide();


и ещё вопрос:

$(this).hide();

должно работать?

vadim5june 19.05.2013 10:49

Цитата:

Сообщение от zaytsewa
parent.find(".area_edit").hide();

А где здесь JQuery?
может так
$(parent).find(".area_edit").each(function(){$(this).hide()})

zaytsewa 19.05.2013 10:55

всё равно не работает(

vadim5june 19.05.2013 11:03

parent это что?

zaytsewa 19.05.2013 11:05

var parent = $(this).parent();

vadim5june 19.05.2013 11:16

должно работать-полностью приведите с html

vadim5june 19.05.2013 11:32

вот так работает
$(function(){$('#ccc').click(function(){var parent=$(this).parent();$(parent).find
(".area_edit").each(function(){$(this).hide()})})
});

BallsShaped 19.05.2013 12:38

parent - пустая коллекция. Очевидно, причина в том, что this - не ссылается на дом-элемент. Скорее всего, this == window.
Выход: научится пользоватся отладчиком.

zaytsewa 19.05.2013 13:58

<td class='area'>
		<input type='hidden' class='area_id' value='{$area_id}'>
		<select class='area_edit'></select>
		<button class='area_edit ok_btn' text='OK'>OK</button>
		<label id='area_name'>{$area_name}</label>
	<td>


$(".ok_btn").click( function(){
//console.log("ok_btn clicked")
//console.log( $(this).parent().html())
var parent = $(this).parent();

if ( parent.hasClass("area"))
{
	//console.log("area")
	var new_area_name = parent.find(".area_edit option:selected").text();
	var new_area_id = parent.find(".area_edit option:selected").val();
	console.log(new_area_name)
	parent.find(".area_id").val( new_area_id ); 
	parent.find("#area_name").text( new_area_name );
	parent.find("#area_name").show();
	parent.find(".area_edit").each(function(){$(this).hide()})
	$(this).hide();
}
...
})

vadim5june 19.05.2013 14:37

$(this).hide();
удалите в конце
У Вас там таблица а это фрагмент?
все работает

zaytsewa 19.05.2013 14:51

да, это фрагмент таблицы, может smarty тупит и что-нибудь портит... у меня по-прежнему не работает(

vadim5june 19.05.2013 14:55

Ьыл незакрытый td
</td>
'new_area_name' без кавычек были
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class='area'>
		<input type='hidden' class='area_id' value='{$area_id}'>
	<select class='area_edit'></select>
		<button class='area_edit ok_btn' text='OK'>OK</button>
		<label id='area_name'>{$area_name}</label>
	</div>
<script>
$(".ok_btn").click( function(){var parent = $(this).parent();
console.log('parent='+parent);
if ( parent.hasClass("area"))
{console.log("ok_btn clicked")
;
var new_area_name = parent.find(".area_edit option:selected").text();
	var new_area_id = parent.find(".area_edit option:selected").val();
	console.log(new_area_name);
	parent.find(".area_id").val( 'new_area_id' ); 
	parent.find("#area_name").text( 'new_area_name' );
	parent.find("#area_name").show();
	parent.find(".area_edit").each(function(){$(this).hide()})
	}
 })
</script>

zaytsewa 19.05.2013 23:32

td был незакрытый, верно, исправила
а new_area_name - имя переменной
тут и правда всё работает, а у меня почему-то нет...
и ещё странно, что у меня подпись на кнопке не отображается... и сама кнопка обрезанная какая-то...


Часовой пояс GMT +3, время: 14:42.