New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jQuery1.6.4で、コントローラのイベントハンドラに渡される第2引数がイベントハンドラをバインドした要素にならない場合がある #338

Closed
fukudayasuo opened this Issue Jun 4, 2014 · 1 comment

Comments

Projects
None yet
2 participants
@fukudayasuo

jQuery1.6.4で、以下のようにdelegateとbindで実行されるイベントを両方バインドした場合に、$elが正しく取得できない。

h5.core.controller('body', {
    __name: 'A',
    'pre click': function(c, $el) {
        console.log($el[0]);  // ①pre
    },
    '{rootElement} click': function(c, $el) {
        console.log($el[0]);  // ②body
    }
});

このようなコントローラをバインドして、preをクリックすると、①ではpre、②ではbodyが取得できるはずだが、jQuery1.6.4を使っている場合に、②でpreが取得される。

@fukudayasuo

This comment has been minimized.

Show comment
Hide comment
@fukudayasuo

fukudayasuo Jun 4, 2014

hifiveでは$elに、イベントオブジェクトのcurrentTargetを入れているが、jQuery1.6.4だとdelegateとbindで同じイベントについてイベントハンドラを指定した時に、currentTargetに正しく値が設定されない。以下のコードで確認した。

$('body').delegate('pre', 'click', function(e) {
    console.log(e.currentTarget); //
});
$('body').bind('click', function(e) {
    console.log(e.currentTarget); //
});

preをクリックすると、①でpreが取得でき、②でもpreになっている。

①、②でthisを取得するとそれぞれ、①pre、②bodyになっている。

コントローラのイベントハンドラではイベントハンドラのバインドされている要素を取得したいので、currentTargetではなくイベントハンドラが呼ばれた時のthisを渡すように修正する。

hifiveでは$elに、イベントオブジェクトのcurrentTargetを入れているが、jQuery1.6.4だとdelegateとbindで同じイベントについてイベントハンドラを指定した時に、currentTargetに正しく値が設定されない。以下のコードで確認した。

$('body').delegate('pre', 'click', function(e) {
    console.log(e.currentTarget); //
});
$('body').bind('click', function(e) {
    console.log(e.currentTarget); //
});

preをクリックすると、①でpreが取得でき、②でもpreになっている。

①、②でthisを取得するとそれぞれ、①pre、②bodyになっている。

コントローラのイベントハンドラではイベントハンドラのバインドされている要素を取得したいので、currentTargetではなくイベントハンドラが呼ばれた時のthisを渡すように修正する。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue Jun 4, 2014

fukudayasuo
#338
イベントハンドラのcurrentTargetは、イベントオブジェクトのcurrentTargetではなくイベントハンドラのthisを使用するようにしました。

@simdy simdy closed this Jun 8, 2014

@simdy simdy added this to the v1.1.11 milestone Jun 8, 2014

@simdy simdy added the bug label Jun 8, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment