2010-10-11 11 views
0

例如:如何在javascript/jquery中調用文本函數?

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

<script> 
var result = callFunction($("#me").attr('callme'));  /// ????????? 
</script> 
+0

你的電話功能是做什麼的?你期望傳遞一個字符串嗎? – 2010-10-11 13:05:38

+1

你究竟想要完成什麼? – Mottie 2010-10-11 13:13:12

回答

0

我想,也許這是解決方案:

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

可是如何才能讓返回值?

2

試試這個:

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

hmmmmmmmmmmmmmmmmmmmmm – 2010-10-11 13:07:10

1

如果屬性呼我是名稱的功能(標識),只要用

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



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

這樣就可以避免使用昂貴的eval()

+0

我喜歡這個,但是,我得到這個錯誤:(f)(); f不是函數?該功能存在... – 2010-10-11 13:47:30

+0

哎呀,對不起。試試這個 (window [$(「#me」)。attr('callme')] || function(){})(); – 2010-10-11 15:03:39

1

更好的解決方案是不在HTML標記中包含該函數。將標記與腳本分開幾乎總是更好。

而是考慮將它添加到使用

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

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

你的DOM對象,並使用

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

還是有點稱它更安全

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

有關數據函數的更多詳細信息,請參閱jQuery documentation

+0

我得到這個錯誤:(f || jQuery.noop)(); f不是函數?該函數存在... – 2010-10-11 13:51:11

+0

'jQuery.noop()'是jQuery的版本1.4+ – Mottie 2010-10-11 14:03:35

+0

'jQuery.noop'可以用'功能(更換){}'如果你需要 或者你可以自己用的地方給它分配'jQuery.noop = function(){};' – tKe 2010-10-11 14:04:51