добавление события второго щелчка к функции останавливает работу первого

0

Я использую initUsers() ниже, есть два почти одинаковых события click, один для ban-btn и один для admin-btn. Событие click для ban-btn работало только до тех пор, пока я не добавил событие click для admin-btn. Когда событие click для admin-btn добавлено, единственное, что происходит, когда я нажимаю ban-btn, - это то, что страница немного перескакивает. Что-то не так с тем, как я установил второе событие click в function initUsers?

HTML

<ul id="users-container" class="users admin">
    <!-- BEGIN users -->
    <div class="users-box" data-uid="{users.uid}" data-admin="{users.administrator}" data-username="{users.username}" data-banned="{users.banned}">
        <a href="/user/{users.userslug}">
            <img src="{users.picture}" class="img-thumbnail"/>
        </a>
        <br/>
        <a href="/user/{users.userslug}">{users.username}</a>
        <br/>
        <div title="reputation">
            <i class='fa fa-star'></i>
            <span id='reputation'>{users.reputation}</span>
        </div>
        <div title="post count">
            <i class='fa fa-pencil'></i>
            <span id='postcount'>{users.postcount}</span>
        </div>

        <div>
            <a href="#" class="btn btn-default ban-btn">Ban</a>
        </div>
        <div>
            <a href="#" class="btn btn-default admin-btn">Make Admin</a>
        </div>

JavaScript:

function initUsers() {

    updateUserButtons();

    $('#users-container').on('click', '.ban-btn', function() {
        var banBtn = $(this);
        var isAdmin = isUserAdmin(banBtn);
        var isBanned = isUserBanned(banBtn);
        var parent = banBtn.parents('.users-box');
        var uid = getUID(banBtn);

        if (!isAdmin) {
            if (isBanned) {
                socket.emit('api:admin.user.unbanUser', uid);
                banBtn.removeClass('btn-warning');
                parent.attr('data-banned', 0);
            } else {
                bootbox.confirm('Do you really want to ban "' + parent.attr('data-username') + '"?', function(confirm) {
                    if (confirm) {
                        socket.emit('api:admin.user.banUser', uid);
                        banBtn.addClass('btn-warning');
                        parent.attr('data-banned', 1);
                    }
                });
            }
        }

        return false;
    });

    $('#users-container').on('click', '.admin-btn', function() {
        var adminBtn = $(this);
        var isAdmin = isUserAdmin(adminBtn);
        var parent = adminBtn.parents('.users-box');
        // var isBanned = isUserBanned(adminBtn);
        var uid = getUID(adminBtn);


            if (!isAdmin)) {
                socket.emit('api:admin.user.makeAdmin', uid);
                adminBtn.attr('value', 'UnMake Admin').html('Remove Admin');
                parent.attr('data-admin', 1);

            } else {
                bootbox.confirm('Do you really want to remove this user as admin "' + parent.attr('data-username') + '"?', function(confirm) {
                    if (confirm) {
                        socket.emit('api:admin.user.removeAdmin', uid);
                        adminBtn.attr('value', 'Make Admin').html('Make Admin');
                        parent.attr('data-admin', 0);

                    }
                });
            }


        return false;
    });

}
  • 0
    if (!isAdmin)) { <- это ошибка, две закрывающие скобки.
  • 0
    @adeneo спасибо, исправлено. по какой-то причине ошибка не отображалась в консоли :(
Показать ещё 2 комментария
Теги:

1 ответ

0

Добавить event.preventDefault(); для обеих функций.

Как это

$('#users-container').on('click', '.ban-btn', function(event) {
    event.preventDefault();

    ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню