Параметр в функцию - элемент DOM
Добрый день, подскажите пожалуйста, как реализовать штуку такую:
Есть функция js получающая в себя единственный параметр - элемент makeHTML($(myEl)) сама функция создает допустим кнопку и добавляет ее в DOM. У кнопки есть параметр onclick который вызывает функцию start, которая должна получить в себя этот вот самый myEl. Подскажите плиз, как этот el внутри makeHTML передать в start? как мне преобразовать пришедший этот el и во что? function makeHTML(el) { $("body").append("<button onclick=\"start(el)\">Моя кнопка</button>") // неправильный вариант и понятно почему } |
Frozen Coyote, даже если сделать так:
$("body").append('<button onclick="start(' + el + ')">Моя кнопка</button>'); Элемент будет преобразован к строке. ИМХО, лучше сделать так: http://codepen.io/anon/pen/vKYEjb?editors=1010 |
Frozen Coyote,
function makeHTML(el){ $('body').append('<button onclick="start(elem)">Моя кнопка</button>'); return el[0]; } function start(el) { alert(el.innerHTML); } var elem = makeHTML( $('div')); Вставлять код в конец body! |
Цитата:
|
Frozen Coyote,
function makeHTML(el) { var mas=[]; var i=0; for (;i < el.length; i++) { $('body').append('<button onclick="start(elem, '+i+')">Моя кнопка</button>'); mas.push(el[i]); }; return mas; }; function start(el,index) { alert(el[index].innerHTML); }; var elem = makeHTML( $('div')); |
DynkanMaclaud,
Зачем DOM элемент в массиве хранить? А если со страницы удалить элемент? Я так понимаю, что утечка памяти - не единственное следствие. Обработчики остаются в памяти и продолжают работать. <div>123</div> <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> <script> function makeHTML(el) { var mas=[]; var i=0; for (;i < el.length; i++) { $('body').append('<button onclick="start(elem, '+i+')">Моя кнопка</button>'); mas.push(el[i]); }; return mas; }; function start(el,index) { alert(el[index].innerHTML); }; var elem = makeHTML( $('div')); $('div').remove(); //123 </script> |
destus,
Цитата:
var elems = 'div'; function makeHTML(el) { var mas=[]; var i=0; for (;i < el.length; i++) { $('body').append('<button onclick="start(elem, '+i+')">Моя кнопка</button>'); mas.push(el[i]); }; return mas; }; function start(el,index) { (checkEl()) ? alert(el[index].innerHTML) : delete el[index]; function checkEl() { if (document.querySelectorAll(elems)[index]) return true else return false; }; }; var elem = makeHTML( $(elems)); $('div').remove(); // |
DynkanMaclaud,
WeakMap еще можно использовать как вторичное хранилище. Без дополнительных танцев с бубном :) |
Часовой пояс GMT +3, время: 05:59. |