Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с обработкой второго нажатия(список ul li) (https://javascript.ru/forum/jquery/69703-problema-s-obrabotkojj-vtorogo-nazhatiya-spisok-ul-li.html)

cadijob 13.07.2017 17:10

Проблема с обработкой второго нажатия(список ul li)
 
Привет.
Есть такой код -
$(".tags li").click(function(){
        if (CloseArea === false) {
            if(clicks == 0){
                $(this).css( "transform", "scale(0.85)" );
                TagsPick.push($(this).children().attr("href"));
                clicks = 1;
            }
            else {
                alert("test");
                clicks = 0;
            }
        }
    });

Когда нажимаю на один li всё норм, потом на него же, всё норм, alert работает. А вот если нажму на один, а потом на другой, то всё равно будет alert работать.
Как решить эту проблему?
Может идентифицировать тот li, по которому нажал пользователь с помощью
TagsPick.push($(this).children().attr("href"));
?
Или есть метод попроще?

cadijob 13.07.2017 20:49

Да, TagsPick.push($(this).children().attr("href"));
через это можно, мне кажется. Только как сравнить то по чему кликнул пользователь и тем что в массиве, через все элементы что бы проверить?

рони 13.07.2017 20:58

cadijob,
:-?

cadijob 13.07.2017 21:12

Цитата:

Сообщение от рони (Сообщение 458436)
cadijob,
:-?

Ультра бред?

рони 13.07.2017 21:26

cadijob,
кто его знает что вы творите, но попробуйте так
$(".tags li").click(function(){
        if (CloseArea === false) {
            if($(this).is(".gmak")){
                alert("test");
                $(this).removeClass("gmak")
            }
            else {
                $(this).css( "transform", "scale(0.85)" );
                TagsPick.push($(this).children().attr("href"));
                $(this).addClass("gmak")
            }
        }
    });

cadijob 13.07.2017 22:01

Цитата:

Сообщение от рони (Сообщение 458445)
cadijob,
кто его знает что вы творите, но попробуйте так
$(".tags li").click(function(){
        if (CloseArea === false) {
            if($(this).is(".gmak")){
                alert("test");
                $(this).removeClass("gmak")
            }
            else {
                $(this).css( "transform", "scale(0.85)" );
                TagsPick.push($(this).children().attr("href"));
                $(this).addClass("gmak")
            }
        }
    });

Работает почти идеально.
Но есть проблема -
$(".tags li").click(function(){
        if (CloseArea === false) {
            if($(this).is(".gmak")){
                $(this).css( "transform", "scale(1)" );
                $(this).removeClass("gmak")
                TagsPick.splice($(this).children().attr("href"), 1);
            }
            else {
                $(this).css( "transform", "scale(0.85)" );
                TagsPick.push($(this).children().attr("href"));
                $(this).addClass("gmak")
            }
            console.log(TagsPick);
        }
    });

TagsPick.splice($(this).children().attr("href"), 1);
чистит массив не правильно, если в нём больше трёх элементов, если меньше то всё ок.
В чём может быть проблема?

рони 13.07.2017 22:29

cadijob,
TagsPick.splice(TagsPick.indexOf($(this).children().attr("href")), 1);

cadijob 13.07.2017 23:12

Цитата:

Сообщение от рони (Сообщение 458455)
cadijob,
TagsPick.splice(TagsPick.indexOf($(this).children().attr("href")), 1);

Спасибо большое!


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