7

この質問は次のように見えます 。In Jquery, how can I know a programic and user click?

しかし、私はそれを取得できません、私のコード

<div class="sample_class" onclick="sample_fn(arg1,arg2,arg3,arg4, e);" ></div>
<div class="trigger_class" onclick="trigger_fn()></div>


function sample_fn(arg1,arg2,arg3,arg4, e){
    console.log(e) ;
    console.log(e.isTrigger);
    console.log(e.hasOwnProperty('originalEvent'));
}


function trigger_fn(){
    $(".sample_class").trigger("click")
}

div.sample_class をクリックすると、コンソール オブジェクト undefined false で取得されます

div.tigger_class をクリックすると、コンソールで同じことを取得しています Object undefined false

これら 2 つのクリックを区別できません。前もって感謝します

4

1 に答える 1

7

UPDATE : jQuery 1.7+ の時点で、イベント オブジェクト (以下のコード内) オブジェクトには、イベントがトリガーされた場合はeという名前のプロパティが含まれ、トリガーされていない場合は未定義です。これは文書化されていないため、使用する前にこれ ( demo ) を確認してください。古いバージョンの jQuery を使用している場合は、以下のコードを使用してください。e.isTriggertrue


関数にフラグを渡す方が簡単かもしれません。ここにデモがあります:

HTML

<button>Trigger a click below</button>

<div id="test">Click Me</div>​

脚本

​$('#test').click(function(e, triggered){
    var msg = (triggered) ? ', triggered' : '';
    console.log('clicked' + msg);
});​​

$('button').click(function(){
    // pass a true flag to the click function to indicate
    // it's been triggered
    $('#test').trigger('click', true);
});

更新: data-attributes には、オブジェクトに自動的に変換される有効な JSON を含めることができます ( demo ):

<div class="test" data-args='{ "quantity": 1, "type": "pizza", "extra1": "peperoni", "extra2": "cheese", "extra3": "cheesy bread" }'>Click Me</div>

data-argは JSON を含めるために一重引用符を使用しますが、内部の JSON では各キーと値を二重引用符で囲む必要があることに注意してください (数値の場合を除く) 。

次に、 data メソッドを使用して情報を抽出します。

var args = $(this).data('args');

別の方法として、引数ごとに個別の data-attribute を作成することもできます ( demo ):

<div class="test" data-quantity="1" data-type="pizza" data-extra1="peperoni" data-extra2="cheese" data-extra3="cheesy bread">Click Me</div>

次に、次のように要素からすべてのデータを収集します。

var args = $(this).data();
于 2012-06-07T15:00:35.233 に答える