изменение значения переменной после нажатия кнопки jquery

#javascript #jquery #drag-and-drop

#javascript #jquery #перетаскивание

Вопрос:

Я хочу иметь возможность щелкнуть по холсту, переместить его на карту, поместить его на карту. После того, как вы поместите его на карту, они могут выбрать холст на карте и переместить его снова. Процесс повторяется. У меня проблемы с переменной ignoreMouseMove, она не сбрасывается в false и всегда имеет значение true.

Вот ссылка на демонстрацию: https://pokemon-map-electro2k.c9users.io/index.html

 var moveCanvas = function ($canvas, e) {
    $(".map ul li."   $canvas).offset({
        left: e.pageX - 30,
        top: e.pageY - 30
    });
};

// When user first click on canvas
var onmousemove = function ($canvas) {

    var ignoreMouseMove = false;

    // Make canvas follow cursor in the map area
    $(".map").mousemove(function (e) {
        if (ignoreMouseMove) return;    // event handling mousemove is "disabled"
        moveCanvas($canvas, e);
    }).click(function () {

        // "re-enable" mousemove
        ignoreMouseMove = true;

        // When canvas is click on again within the map area, make canvas follow cursor
        $(".map ul li").click(function () {
            $(".map").mousemove(function (e) {
                if (!ignoreMouseMove) return;
                moveCanvas($canvas, e);
            }).click(function () {
                // Click function does not work anymore. ignoreMouseMove can't be reset. It is always true
                ignoreMouseMove = false; 
            })
        });

    });

};
  

Комментарии:

1. Вы пробовали mouseup или mousedown вместо этого?

2. да, но это не совсем то, что я хочу. Я хочу щелкнуть по холсту, поместить его на карту. Затем пользователь может щелкнуть холст на карте, чтобы изменить местоположение холста

3. Тем не менее, вы можете использовать mousedown для обработки «забрать» и mouseup «удалить»

4. но вы должны удерживать мышь нажатой, чтобы выбрать. Я хочу, чтобы изображение свободно следовало за курсором, не удерживая мышь нажатой, затем нажмите еще раз, чтобы удалить

Ответ №1:

Возможно, вам потребуется изменить нижеприведенную строку

 // "re-enable" mousemove
ignoreMouseMove = true;
  

в

 // "re-enable" mousemove
ignoreMouseMove = !ignoreMouseMove;
  

Комментарии:

1. работает ли ссылка? На веб-сайте есть изображения. JSFiddle не позволяет загружать файлы

2. ссылка работает, но я не смог изменить и протестировать, дайте мне посмотреть