Доступ к $ (this) в GopherJS - PullRequest
       18

Доступ к $ (this) в GopherJS

0 голосов
/ 30 мая 2018

В качестве упражнения я конвертирую одностраничное приложение из JavaScript в GopherJS.

В коде JS появляется следующее:

var list = $('.all-products .products-list');
list.find('li').on('click', function (e) {
  e.preventDefault();
  var productIndex = $(this).data('index');
  window.location.hash = 'product/' + productIndex;
})

В моем преобразовании GopherJS у меня есть следующее:

list := jquery.NewJQuery(".all-products .products-list")
list.Find("li").On("click", func(e jquery.Event) {
e.PreventDefault()
// productIndex := jquery.NewJQuery(e.Target).Data("index").(float64)
// dom.GetWindow().Location().Hash = "product/" + productIndex
})

, но я изо всех сил пытаюсь понять, как перевести $(this).jquery.NewJQuery(e.Target), похоже, не возвращает li, но div, который находится внутри li.

Насколько я понимаю, $(this) внутри функции возвращает this в областивнешний элемент jQuery (li).

1 Ответ

0 голосов
/ 31 мая 2018

Для $(this) вам нужно использовать js.MakeFunc, чтобы получить доступ к объекту this.Что-то вроде

list.Find("li").On("click", js.MakeFunc(func(this *js.Object, args []*js.Object) interface{} {
    e := dom.WrapEvent(args[0])
    e.PreventDefault()
    productIndex := jquery.NewJQuery(this).Data("index").(float64)
    dom.GetWindow().Location().Hash = "product/" + productIndex
    return nil
}))
...