Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: JQuery, проверка на true
цитата
31/07/10 в 11:20
 FXIX
банальный вопрос но не могу догнать.
Короче есть филдсеты, в каждом контейнере есть кнопка "удалить источник". Так вот надо сделать так чтобы единственный филдсет нельзя было удалить.

<fieldset>
<p> этот не удаляется </p>
<button class="button2">Удалить источник</button>
</fieldset>
<fieldset>
<button class="button2">Удалить источник</button>
</fieldset>
<fieldset>
<button class="button2">Удалить источник</button>
</fieldset>


код http://pastebin.com/rAVTisgF
трабл в строке 4. условие не могу составить так чтобы оно работало
цитата
31/07/10 в 11:31
 x123p
А если сделать банально и просто считать сколько у тебя этих филдсетов на странице в момент удаления?
цитата
31/07/10 в 11:44
 FXIX
да куда-уж банальнее. вроде максимально банально

тыкаем на кнопку button.button2
$("button.button2").click(function () {
если ее родитель - первый филдсет на странице
if (($(this).parent()) === $("fieldset:eq(0)")) {
ничего не делаем
alert('нельзя удалить');
return false;
}
else {
удаляем родитель-филдсет
$(this).parent().remove();
alert('источник удален');
return false;
}
});
});

Вообще филдсетов может быть много, смысл в том чтобы тормознуть на fieldset:eq(N). к примеру 5 филдсетов. 4 "железные". остальные под ними удаляются\добавляются
цитата
31/07/10 в 11:53
 freeek
тороплюсь, как вариант, хотя я думаю можно намного изящней

Код:
$(document).ready(function(){
        function isLast(){
          return ( $("body").find("fieldset").length > 1) ? false : true;           
        }   
        $("button.button2").click(function () {           
            if (isLast()) {
                alert('нельзя удалить');
                return false;
            }
            else {             
                $(this).parent().remove();
                alert('источник удален');
                return false;
            }
        });
    });
цитата
31/07/10 в 12:32
 FXIX
всем спасибо, остановился пока на таком варианте

Цитата:

$(document).ready(function(){
$("button.button2").click(function () {
if ($("fieldset").size()==1) {
alert('нельзя удалить');
return false;
}
else {
$(this).parent().remove();
alert('источник удален');
return false;
}
});
});
цитата
01/08/10 в 01:34
 freeek
ну по сути, те же яйца, только в профиль icon_mrgreen.gif
цитата
02/08/10 в 12:43
 FXIX
яйца теже но кода меньше icon_wink.gif
цитата
02/08/10 в 15:31
 freeek


не всегда меньше кода = хорошо

в моем варианте блок условий вызывает функцию от которой должен получить true/false, и этот блок абсолютно не волнует, что там происходит

а вот в самой функции, мы можем постоянно наращиваь и модернизировать код, в связи с потребностями

+
. у меня логика такая, что мы ищем филдсеты внутри body - задача может поменяться, и искать их придется в другом месте, а не по всему документу
. я смотрю что филдсетов должно быть больше 1, а не 1, мало ли, вдруг закрадется ошибка где то

хотя если там все просто, и тебя устравиает свой вариант, юзай на здоровье smail54.gif, просто размышления
цитата
02/08/10 в 15:56
 FXIX
freeek писал:
мы можем постоянно наращиваь и модернизировать код, в связи с потребностями

ну да. если не учитывать что код на 3 строчки и его задача пукнуть в нужном месте и умереть.
freeek писал:

+
. у меня логика такая, что мы ищем филдсеты внутри body - задача может поменяться, и искать их придется в другом месте, а не по всему документу
.

не поверишь, - if ($("div.any fieldset").size()==1) smail101.gif
цитата
03/08/10 в 09:40
 freeek
ну пусть будет так

меня учили кодить по другому, так что тут на свое усмотрение, тем более если Цитата:
его задача пукнуть в нужном месте и умереть


Эта страница в полной версии