Просто используйте параметр value
вместо method
:
In [20]: df
Out[20]:
Cat1 Cat2 Day
0 cat mouse 1
1 dog elephant 2
2 cat giraf 3
3 NaN ant 4
In [21]: df.Cat1 = df.Cat1.fillna(value=df.Cat2)
In [22]: df
Out[22]:
Cat1 Cat2 Day
0 cat mouse 1
1 dog elephant 2
2 cat giraf 3
3 ant ant 4
Я наконец-то начал работать, используя пространства имен как on('click.namespace', function(){...})
. Спасибо за помощь, ребята!
Полагаю, вы видели ответы, такие как , этот , поскольку вы упоминаете, что не удаляете прослушиватели событий на дочерних элементах. Конечно, выполнить глубокое клонирование не получится, но что может сработать, так это создать неглубокое клонирование, а затем перенести дочерние узлы в клон. Это немного больше работы, но она будет делать то, что вы хотите.
Основная работа находится в setTimeout
, все остальное на самом деле просто настройка.
Здесь я присоединяю два прослушивателя событий щелчка: один к кнопке и один к контейнеру div. до 5 секунд setTimeout
, нажатие кнопки запустит обоих слушателей (поэтому вы увидите журналы консоли для КНОПКИ и DIV). После таймера вы все равно увидите событие BUTTON.
var rem = document.getElementById('rem');
var btn = document.getElementById('btn');
function onClick(e) {
var t = e.currentTarget
console.log(t.tagName);
}
rem.addEventListener('click', onClick);
btn.addEventListener('click', onClick);
setTimeout(() => {
console.log('removing events from div');
// shallow clone
var rem2 = rem.cloneNode(false);
// make and extract range to doc fragment
// for all contents of original div
var range = document.createRange();
range.setStartBefore(rem.firstChild);
range.setEndAfter(rem.lastChild);
var documentFragment = range.extractContents();
// append doc fragment to clone
// insert clone and remove old div
rem2.appendChild(documentFragment);
document.body.insertBefore(rem2, rem);
rem.remove();
}, 5000);
<div id='rem'>
<h3>Heading</h3>
<button id='btn'>click me</button>
<p>paragraph <b>bold</b> stuff</p>
</div>