jquery.contextMenu Не удается прочитать свойство после отправки ajax - PullRequest
0 голосов
/ 15 апреля 2019

я использую ajax.beginform в MVC с InsertionMode.Replace и использую jquery.contextMenu.min.js, все работает нормально, но по какой-то причине после отправки я получил dom error

Uncaught TypeError: Cannot read property 'rightClick' of undefined
    at b.fn.init.show (room.script.js:627)
    at b.fn.init.show (jquery.contextMenu.min.js:1)
    at HTMLDivElement.contextmenu (jquery.contextMenu.min.js:1)
    at HTMLDocument.dispatch (jquery-3.3.1.min.js:1)
    at HTMLDocument.v.handle (jquery-3.3.1.min.js:1)

это моя форма

`TableType.Open ==> enum`
@using (Ajax.BeginForm("ChangeStatus", "Orders", new { tableType = TableType.Open }, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "OrderList", InsertionMode = InsertionMode.Replace }))
                            {
                                <button class="dropdown-item" type="submit">Open Table</button>
                            }

и это мой contextMenu звонок

    $().contextMenu &&
        $.contextMenu({
            selector: ".list .card",
            callback: function (key, options) {
                options.items["id"] = { name: $(this).find("input[type = 'hidden']").val() }
                if (key === "addorder") {
                    // Some code
                }
                if (key === "changestatus") {
                   // Some code
                }
            },
            events: {
                show: function (e) {
                    show: function (e) {
                    var t = e.$trigger.parents(".list");
                    t && t.length > 0 && t.data("shiftSelectable").rightClick(e.$trigger)
                }

                }
            },
            items: {
                addorder: {
                    name: "Add Order",
                    className: "simple-icon-docs"
                },
                changestatus: {
                    name: "Close Order",
                    className: "simple-icon-drawer"
                }
            }
        })

1 Ответ

0 голосов
/ 16 апреля 2019

Я просто переместил класс селектора .list из запроса ajax

<div class="row">
    <div class="col-12 list"> // <=== out the ajax replace
        <div id="OrderList">
            // ajax data in replace
        </div>
    </div>
</div>

, потому что при загрузке страницы DOM может прочитать селектор .list, но в запросе ajax DOM не может найтиселектор больше

селекторное событие

events: {
           show: function (e) {
               show: function (e) {
               var t = e.$trigger.parents(".list");
               t && t.length > 0 && t.data("shiftSelectable").rightClick(e.$trigger)
             }

           }
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...