2010-10-11 4 views

ответ

0

Я думаю, что, возможно, это решение:

<script> 
setTimeout($("#me").attr('callme'), 0); 
</script> 

Но как получить возвращаемое значение ??

2

Попробуйте это:

<script> 
    var callMe = $("#me").attr("callme"); 
    var result = eval(callMe); 
</script> 
+1

hmmmmmmmmmmmmmmmmmmmmm –

1

если атрибут CallME это имя (идентификатор) функции просто использовать

<input id="#me" type="button" callme="doAction"/> 



(window[$("#me").attr('callme')] || function() {})(); 

так что вы можете избежать использования дорогостоящего Eval()

+0

Мне это нравится, но я получаю эту ошибку: (f)(); f не является функцией? функция существует ... –

+0

К сожалению, извините. Попробуйте это (окно [$ ("# me"). Attr ('callme')] || function() {})(); – 2010-10-11 15:03:39

1

Лучшим решением было бы не включать функцию в вашу разметку HTML. Почти всегда лучше отделить свою разметку от своих скриптов.

Вместо рассмотреть вопрос о добавлении его к объекту йот используя

$('#me').data('callme', function(){...}); 

или

$('#me').data('callme', doAction); 

и назвав его помощью

$('#me').data('callme')() 

или немного безопаснее

($('#me').data('callme')||jQuery.noop)() 

Для получения более подробной информации о функции данных см. JQuery documentation.

+0

Я получаю эту ошибку: (f || jQuery.noop)(); f не является функцией? функция существует ... –

+0

'jQuery.noop()' находится в jQuery версии 1.4+ – Mottie

+0

'jQuery.noop' ​​может быть заменен на' function() {} ', если вам нужно , или вы можете назначить его где-то с 'jQuery.noop = function() {};' – tKe

Смежные вопросы