0

これがいかに愚かであるかについて申し訳ありません。私のJSの語彙はひどく、何を検索すればよいのかまったくわかりませんでした。

私はjQueryを使用しています。

だから私はこのコードを持っています:

var example = {
    open: function(element){
       alert(element.text());
    },
    init: function(){
        $("a").click(example.open);
    }
};

$(document).ready(function(){example.init();)

ここに問題があります。「a」要素をクリックしたときにexample.open()に引数を渡したいのです。しかし、私にはできないようです。example.openメソッドを実行するだけでなく、ページの読み込み時にのみ存在させるために、かっこを付けることはできません。おもう。したがって、引数を渡す方法はありません。

だから私の質問は…かっこを持てない関数にどのように引数を渡すのかということだと思います。

本当にありがとう。

4

5 に答える 5

2

別の無名関数を挿入します。

var example = {
    open: function(element){
       alert(element.text());
    },
    init: function(){
        $("a").click(function()
        {
          example.open($(this));
        });
    }
};

thisjQuery は関数のコンテキスト ( ) を DOM 要素に設定するため、このバージョンを試すこともできます。

var example = {
    open: function(){
       alert($(this).text());
    },
    init: function(){
        $("button").click(example.open);
    }
};
于 2012-05-02T16:49:52.040 に答える
1

jQuery はイベントを発生させた HTML 要素をthis変数にバインドするため、それを通常のパラメーターとして渡すだけです。

var example = {
    open: function(element){
       alert(element.text());
    },
    init: function(){
        $("a").click(function() {
            // jQuery binds "this" to the element that initiated the event
            example.open(this);
        });
    }
}

$(document).ready(function(){example.init();)
于 2012-05-02T16:50:38.317 に答える
1

独自のハンドラーを介してアンカーを渡すことができます。

var example = {
    open: function( element ){
       alert(element.text());
    },
    init: function(){
      $("a").on("click", function() {
        example.open( $(this) );                           
      });
    }
};

$(document).ready(function() {
  example.init();
});
于 2012-05-02T16:44:59.563 に答える
0

あなたが実際に何をしたいのかわかりません。ただし、試してみることができます:

var example = {
open: function(event){
   event.preventDefault();
   alert($(event.target).text()+' : '+event.data.x);
},
init: function(){
    $("a").bind('click',{x:10},example.open);
}
};

$(example.init);

デモ: http://jsfiddle.net/rahen/EM2g9/2/

于 2012-05-02T17:03:08.180 に答える
-1

すみません、質問を誤解していました。


これを処理するには、いくつかの方法があります。

  1. 呼び出しを関数でラップします。

    $('a').click( function(){ example.open( $(this) ) } );
    

    $(this)引数リストで置き換えることができる場所

  2. 引数をパラメーターとして受け取る、別のイベント クリエーター関数を呼び出します。

    $('a').bind( 'click', {yourvariable:yourvalue}, example.open );
    

    open が呼び出されるパラメーターを取り、event変数を介して変数にアクセスできますevent.data(上記の場合はevent.data.yourvariable)


エラーとその他の情報


ただし、jQuery オブジェクトでelement.text()ない限り機能しません。elementしたがって、オブジェクトを関数に渡す前、または関数によって受信された後に、オブジェクトを jQueryify できます。

  1. 渡されたオブジェクトをjQueryします。

    function(){ example.open(this) } /* to */ function(){ example.open($(this)) }
    
  2. 受け取ったオブジェクトをjQuery します。

    alert(element.text());           /* to */ alert($(element).text());
    

つまり、パラメーターなしでオブジェクトを呼び出すと、thisスコープ内の (イベントを生成した) オブジェクトが参照されます。したがって、実際には、追加のパラメーターを渡す必要がない場合は、次のような方法で回避できます。

var example = {
    open: function(){           // no argument needed
       alert($(this).text());   // this points to element being clicked
    },
    init: function(){
       $("a").click(example.open);
    }
};

$(document).ready(function(){
   example.init();
});                             // your ready function was missing closing brace '}'
于 2012-05-02T16:52:09.013 に答える