【问题标题】:Binding function to older/newer button in GmailGmail中旧/新按钮的绑定功能
【发布时间】:2014-02-22 13:05:00
【问题描述】:

我正在尝试将特定功能绑定到 Gmail 收件箱中的较新/较旧按钮。

这两个按钮的html如下:

<div id=":i0" class="T-I J-J5-Ji amD T-I-awG T-I-ax7 T-I-Js-IF L3" role="button" tabindex="0" data-tooltip="Newer" aria-label="Newer" style="-webkit-user-select: none;"><span class="amF">&nbsp;</span><img class="amI T-I-J3" src="images/cleardot.gif" alt=""></div>


<div id=":hs" class="T-I J-J5-Ji amD T-I-awG T-I-ax7 T-I-Js-Gs L3" role="button" tabindex="0" data-tooltip="Older" aria-label="Older" style="-webkit-user-select: none;"><span class="amF">&nbsp;</span><img class="amJ T-I-J3" src="images/cleardot.gif" alt=""></div>

我尝试了各种方法,例如:

$('span.Di div.T-I').one('click', function(){
        console.log('Hey');
});

$('span.Di').find('div.T-I').addClass('.class-name');
$('.class-name').click(function(){
    console.log('hey');
});

现在,当我第一次单击按钮时,它可以工作,但是在随后的点击中,它就不起作用了。

有什么建议吗?

【问题讨论】:

    标签: javascript jquery google-chrome-extension


    【解决方案1】:

    .one(函数只执行一次,尝试用.on(替换它

    $('span.Di div.T-I').on('click', function(){
    

    在您的第二段代码中,将其更改为:

    $('span.DI').find('div.T-I').addClass('.class-name');
    $('.class-name').click(function(){
        console.log('hey');
    });
    

    您在$('span.DI) 中有错字(右括号前缺少')。

    【讨论】:

    • 嘿,丹尼尔,我意识到错字了。然而,这两种方法都不起作用。在第二种方法中,该类仅在第一次添加,而不是在第二次单击后添加。我认为这可能与 Gmail 的加载部分有关。所以我必须在视图加载完成后调用该函数。
    • 我猜 Gmail 正在重新呈现按钮,并且由于点击侦听器只添加一次,因此它永远不会再次触发。试试$('body').on('click', 'span.Di div.T-I', Fn);
    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多