как установить «это» как дочерний элемент в событии onclick - PullRequest
0 голосов
/ 05 января 2019

РЕДАКТИРОВАТЬ 2 :

На самом деле, я пытался передать свойства img на серверную часть, потому что сценарий приложения google - это javascript на серверной стороне. И передача данных на сервер может быть только в виде строки. Решение, которое я нашел, заключается в добавлении обычного свойства img со значением объекта, содержащего все, что я хочу (id, src, ... моего img. Я JSON.stringified это значение и BOOM ... Теперь я получаю все необходимые данные.
Спасибо за вашу помощь и извините за неправильное понимание.

EDIT

Благодаря этой теме

https://stackoverflow.com/a/9726264/1859295

Наконец-то я смог найти решение своего вопроса.

Я использовал метод .on () в своем списке ul, и теперь мое «this» указывает на мой элемент img.

Исходное сообщение:

У меня пустой ул. Я добавляю li с JS. li содержат img с атрибутом src, id, name и событием onclick, которое запускает функцию с параметром this. Мне нужно, чтобы мое "this" было элементом img в моей жизни. Вместо этого я получаю свой ul как "this"

мой код:

function createItemsList(items){ 
    $("#items").empty();

    for (var i = 0; i < items.length; i++) {
      $("#items").append('<li class="w3-display-container" 
     id="test"><img src="'+ items[i].url + '" id ="'+ items[i].id + 
     '" style="height:25px;" 
     onclick="google.script.run.addItem(this)"; return false; 
     class="w3-ripple"></li>');
          }
        };


        google.script.run
              .withSuccessHandler(createItemsList)
              .getItemsList();

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Я бы изменил изнутри на следующее

 var img = $('<img />').attr('src', items[i].url).attr('id', items[i].id);
    img.click(function() {
        google.script.run.addItem(this)
    })
    $("#items").append('<li class="w3-display-container" id="test">').append(img);

В основном, чтобы использовать click eventhandler из jquery, поэтому я думаю, что это будет img.

0 голосов
/ 05 января 2019

Существуют лучшие способы создания элементов с помощью jQuery:

for (var i = 0; i < items.length; i++) {
  let img = $("<img/>", {
    src: items[i].url,
    id: items[i].id,
    css: { height: "25px" },
    click: function() { google.script.run.addItem(this); },
    "class": "w3-ripple"
  });
  let li = $("<li/>", {
     "class": "w3-display-container"
     html: img
  });
  $("#items").append(li);
}

Средство $("<tagname/>") принимает второй аргумент со свойствами для нового элемента. Вы можете включить функции обработчика с этим. Это гораздо удобнее, чем пытаться совмещать символы кавычек в сложенном HTML-коде через строки.

...