Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Содержимое bind (https://javascript.ru/forum/jquery/6091-soderzhimoe-bind.html)

m00 10.11.2009 10:02

Содержимое bind
 
Всем привет.

Есть некоторый элемент, к которому было применено следующее:

$('...').bind('click', function() { ... })


Мне нужно получить функцию, которая срабатывает на клик и сохранить её или передать другому объекту.

$('...').click
$('...').attr('onclick')
document.getElementById('...').onclick
document.getElementById('parent').addEventListener('click', handler(возвращает false), false)

Ничего не срабатывает.

Возможно ли это сделать, ведь где то хранится действие, которое должно произойти на клик.

Riim 10.11.2009 10:10

eventListenerList : http://www.w3.org/TR/2001/WD-DOM-Lev...23/events.html

Но это новая штука, мало где есть, пока же только эмулировать самому.

Octane 10.11.2009 10:13

var test = $("<div>test</div>");
test.appendTo(document.body);
test.click(function() { alert("O_o") });
var handlers = test.data("events").click;
for (var listener in handlers) {
    handlers[listener]();
}

Riim 10.11.2009 10:21

Ох, туплю. Там же даже в самых стандартных вариантах все уже есть.

m00 10.11.2009 10:42

Цитата:

Сообщение от Octane (Сообщение 34994)
var test = $("<div>test</div>");
test.appendTo(document.body);
test.click(function() { alert("O_o") });
var handlers = test.data("events").click;
for (var listener in handlers) {
    handlers[listener]();
}


Спасибо, это похоже то что нужно. Нашел такой пример:
console.dir( jQuery('#span').data('events') );
jQuery.each($('#span').data('events'), function(i, event){
        jQuery.each(event, function(i, handler){
	       console.log( handler.toString() );
	});
});


Цитата:

Сообщение от Riim (Сообщение 34998)
Ох, туплю. Там же даже в самых стандартных вариантах все уже есть.


Это пробовал, не совсем подходит. Думал сначала не получать событие click, а отлавливать через листенер и возвращать false, но в итоге click все равно срабатывал.

Спасибо за ответы.


Часовой пояс GMT +3, время: 23:55.