0
這裏的jsfiddle exapmle:https://jsfiddle.net/1a6j4es1/1/的JavaScript相當於jQuery的。對()的額外選擇
$('table').on('click', 'td', function() {
$(this).css('background', 'green');
});
如何這段代碼普通的JavaScript被改寫?
回調函數應該適用於table
元素中新的td
元素。
更新:我發現了一個很短,乾淨的解決方案:https://jsfiddle.net/1a6j4es1/28/
function delegateSelector(selector, event, childSelector, handler) {
var is = function(el, selector) {
return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
};
var elements = document.querySelectorAll(selector);
[].forEach.call(elements, function(el, i){
el.addEventListener(event, function(e) {
if (is(e.target, childSelector)) {
handler(e);
}
});
});
}
delegateSelector('table', "click", 'td', function(e) {
e.target.style.backgroundColor = 'green';
});
其中一個單元格包含子元素時不起作用。或者當有'
我修復了這個解決方案:https://jsfiddle.net/1a6j4es1/27/ – DmitryR
添加ID到要點擊元素,並使用此代碼:
來源
2015-04-06 16:34:46 Eyal
如果有一個跨度或div insid e td? – charlietfl
@charlietfl你想和他們做什麼? – Eyal
希望父母''不要更改孩子。 'target'可能不是'# – charlietfl
相關問題