События, не регистрирующиеся после replaceWith

Вы можете попробовать проверить длину как

length(body('Run_query_and_list_results_2')?['value']) = 0 

или использовать оператор равенства как

"equals":[ "@empty(body('Run_query_and_list_results_2')?['value'])", true ] 
19
задан strager 20 April 2009 в 22:07
поделиться

3 ответа

Поскольку при замене исходного элемента связанные с ним события удаляются. Вам нужно будет повторно присоединить обработчик события click к оригиналу после вызова replace.replaceWith (original) :

$(function() 
{   
   function replace() 
   {
      var replacement = $(document.createElement('span'));
      var original = $(this).replaceWith(replacement);

      replacement
         .css('background-color', 'green')
         .text('replacement for ' + $(this).text())
         .click(function() 
         {
            replacement.replaceWith(original);
            original.click(replace);
         });
   }

   $('.x').click(replace);
});
11
ответ дан 30 November 2019 в 04:59
поделиться

живые события - это то, что вы ищете

3
ответ дан 30 November 2019 в 04:59
поделиться

ОБНОВЛЕНИЕ : live () и bind () устарели в пользу на () .

Вы можете использовать события live () и bind () , это ваш новый код:

$(function() {
$('.x').live('click', function() {
    var replacement = $(document.createElement('span'));
    var original = $(this).replaceWith(replacement);

    replacement
        .css('background-color', 'green')
        .text('replacement for ' + $(this).text())
        .bind('click', function() {
            replacement.replaceWith(original);
        });
});
});

-Live event работает с jQuery 1.3 и выше.

-если вы хотите остановить прямое распространение, используйте функцию die () .

4
ответ дан 30 November 2019 в 04:59
поделиться
Другие вопросы по тегам:

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