2012-04-05 11 views
0

私はphonegapプログラムを作成していますが、onClick="blah(param1,param2)"の代わりに.on('tap')イベントを400msの遅延のために使用します。私がしたいのは、 "タップ可能な"アイテムのリストを "button1"というクラスに与え、各アイテムにはdata-meth="dosomething3()"を与え、何かがタップされたときにそれを取得します。これまでの例では、タップは使用せず、代わりにクリックを使用しています。jqueryを使用してHTML5データ要素から関数+パラメータを取得して実行する

 <script> 
    $(document).ready(function() { 
    console.log('document ready'); 
    $(".button1").on('click', function(e){ //this will changed to 'tap' eventually 
    e.preventDefault(); 
    console.log("logged click"); 
    var tempp=$(this).data("meth"); 
    alert(tempp); 
    tempp; // thought this would call the function as it is written in the data-meth value but it doesn't 
    }); 

    }); 
    function dosomething(){ 
    console.log('dosomething called'); 

    } 
function dosomething(var1,var2){ 
alert('hello:' +var1+' just showing var2'+var2); 
} 

    </script> 

My simple html is 

    <ul> 
    <li style="text-align:center" class="button1" data-meth="dosomething()" >One</li> 
    <li style="text-align:center" class="button1" data-meth="dosomething2(var1,var2)">Two</li> 
    <li style="text-align:center" class="button1" data-meth="dosomething3()">Three</li> 
    </ul> 

どのようにして関数をベースにして呼び出すことができますか、データメータ値に格納されているものはありますか?私の頭の上オフ

答えて

0

$(".button1").click(function() { 
    var functionName = $(this).attr("data-meth").split("(")[0]; 
    var functionParams = $(this).attr("data-meth").split(")")[0].split[","]; 
    window[functionName](functionParams); 
});​ 

functionParamsは、自分の価値観を含む配列になります。それはあなたが必要とするものかもしれません。また、そのようeval常に悪を使用することができます。

$(".button1").click(function() { 
    eval($(this).attr("data-meth")); 
});​ 

その場合、あなたのパラメータを渡すことができ、通常通りに扱います。

+0

eval();私のために、意図したように働いた、ありがとう –

+0

問題ないですが、 'eval()'の使い方に注意してください。 Googleがもう一度それを使用する前に欠点。しかし、この場合はおそらく大丈夫です。 –

+0

私はアンドロイドアプリのためのphonegapと一緒に使用していますので、通常のインターネットサイトになるようにはなりません。 –

関連する問題