0

電話ギャッププログラムを作成していますが、400ミリ秒の遅延.on('tap')のために代わりにイベントを使用したいと思います。onClick="blah(param1,param2)"私がやりたかったのは、「タップ可能な」アイテムのリストに「button1」のクラスを与え、各アイテムにそれを与えて、data-meth="dosomething3()"何かがタップされたときにそれを取得することでした。これまでのところ、私の例ではタップを使用せず、代わりにクリックします。

       <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>

関数ベースまたはdata-meth値に格納されているものを取得して呼び出すにはどうすればよいですか?

4

1 に答える 1

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"));
});​

その場合、パラメータを渡して通常どおりに扱うことができます。

于 2012-04-05T17:20:08.170 に答える