@michellie

Как ограничить повторное использование функции по одному элементу?

$(document).on('click','.visualp',function(e) {
  var that = $(this);
var spanText = $(this).find("button:first").val();
var x=spanText.split("_");
var id_tops = '<?php echo $id;?>';
    e.preventDefault();
    $('.comments').remove();
    $.ajax({
        type: "POST",
        url: 'showcommentstop.php',
        data: { 
            elementid: x[0],
            topid: id_tops
        },
        success: function (list) {
            if (list == '') {
            } else {
               $(that).append(list);
            }
                }
    });
});


как сделать чтобы при клике по элементам дива с которого сработал эвент, функция больше не срабатывала, пока не кликну на другой див с классом .visualp?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@MrTimon
Во-первых эта строка просто ужасна var id_tops = '<?php echo $id;?>'; (это не ошибка но глаза режет) порекомендовал бы все переменные которые приходять с сервера назначить где-то вначале скрипта и в ф-циях использовать уже js-ые переменные. тоисть
<script>
    var ID = parseInt('<?php echo $id;?>');


    $(document).on('click','.visualp',function(e) {
        //...
        var id_tops =ID ;
        //...
    });
</script>


Вот а если по вопросу то можно сделать глобальную переменную и туда сохранять айди елемента на который нажали ну или какой-то другой уникальный атрибут ну или сам елемент и в фунции проверять если атрибут совпадает тогда ничего неделять и выходить. Как то так:
var currElClick = false;
$(document).on('click','.visualp',function(e) {
    if (currElClick == $(this).attr('id')) return false;
    currElClick  = $(this).attr('id');
    
    //Далее код ф-ции...
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект