Параметр в функцию - элемент 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, время: 20:07. |