jQuery, как связать onclick событие с динамично добавленным элементом HTML [дубликат]

Некоторые точки

Недостатки:

  1. Размер больше, чем флэш-память.
  2. Flash уже имеет огромную основу установки.
  3. Средства проектирования (Смешение и Дизайн Выражения) далеко от Adobe. (т.е. PhotoShop)
  4. Отсутствие функций. (Поддержка микрофона, Растровые API, Печатая поддержку и т.д.)
  5. поддержке Linux недостает. Хотя Лунный свет уже там или V 1.0 и 2 (Альфа).

Профессионалы:

  1. Большой IDE (Visual Studio 2008) для разработки.
  2. Существующие .net языки могут использоваться. Таким образом, веб-разработчики могут легко сместиться к Silverlight.
  3. Простой способ вручить веб-сервисы и поддержку LINQ.
  4. Простая интеграция с существующими .net технологиями.
  5. поддержка WCF. (Хотя ограничено basicHttpBinding).
  6. Некоторые хорошие функции как Deepzoom. (Я соглашаюсь, что это не уничтожающая функция).
  7. Microsoft создает резервную копию его. Вам нравится это или нет. Они не запускают с нуля.
123
задан Saurabh Agrawal 23 May 2018 в 05:41
поделиться

4 ответа

Первая проблема заключается в что, когда вы вызываете append для набора jQuery с более чем одним элементом, для каждого создается клон добавляемого элемента, и, таким образом, прикрепленный наблюдатель событий теряется.

Альтернативный способ сделать это - создать ссылку. для каждого элемента:

function handler() { alert('hello'); }
$('.add_to_this').append(function() {
  return $('<a>Click here</a>').click(handler);
})

Другая потенциальная проблема может заключаться в том, что наблюдатель событий прикрепляется до того, как элемент был добавлен в DOM. Я не уверен, есть ли здесь что сказать, но я думаю, что такое поведение можно считать неопределенным. Более надежным подходом, вероятно, будет:

function handler() { alert('hello'); }
$('.add_to_this').each(function() {
  var link = $('<a>Click here</a>');
  $(this).append(link);
  link.click(handler);
});
60
ответ дан 24 November 2019 в 01:09
поделиться

How about the Live method?

$('.add_to_this a').live('click', function() {
    alert('hello from binded function call');
});

Still, what you did about looks like it should work. There's another post that looks pretty similar.

51
ответ дан 24 November 2019 в 01:09
поделиться

Consider this:

jQuery(function(){
  var close_link = $('<a class="" href="#">Click here to see an alert</a>');
      $('.add_to_this').append(close_link);
      $('.add_to_this').children().each(function()
      {
        $(this).click(function() {
            alert('hello from binded function call');
            //do stuff here...
        });
      });
});

It will work because you attach it to every specific element. This is why you need - after adding your link to the DOM - to find a way to explicitly select your added element as a JQuery element in the DOM and bind the click event to it.

The best way will probably be - as suggested - to bind it to a specific class via the live method.

1
ответ дан 24 November 2019 в 01:09
поделиться

Я считаю, что это хороший способ:

$('#id').append('<a id="#subid" href="#">...</a>');
$('#subid').click( close_link );
0
ответ дан 24 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: