【问题标题】:$(this) confusion within click event$(this) click 事件中的混淆
【发布时间】:2015-04-16 23:20:35
【问题描述】:

出于某种原因,我必须将纯 js 与 jquery 一起使用。我有这样的标签

<a onclick="openClose()">Click</a>
<div class="spoilermain">content</div>

这是我的 js

    function openClose(){
        $('.spoilertop').next('.spoilermain').toggle();
    }

问题是如果有多个扰流板,那么所有的都会被切换。在这种情况下如何使用 $(this) ?我知道我可以选择 a 然后使用 $(this) 但由于某种原因我必须触发 openClose()。

【问题讨论】:

  • spoilertop 是什么?父包装器...
  • 尝试将this 作为参数传递。 &lt;a onclick="openClose(this)"&gt;Click&lt;/a&gt;
  • 您可以在这里找到答案:here
  • 为什么不能用 jQuery 附加事件?
  • 你的问题无法理解..

标签: javascript jquery


【解决方案1】:

可以去掉onclick事件,添加open-close类

<a class=".open-close">Click</a>

然后只需调用您的脚本:

$('.open-close').click(function(){
        $(this).next('.spoilermain').toggle(); 
});

【讨论】:

  • 这其实是最漂亮的解决方案。
【解决方案2】:

在函数调用时将其作为参数传递

html代码

<a onclick="openClose(this)">Click</a>
<div class="spoilermain">content</div>

javascript 代码

function openClose(ele){
        $(ele).next('.spoilermain').toggle();
    }

【讨论】:

    【解决方案3】:

    这个呢?将“this”作为参数传递给 html 中的 onclick 函数处理程序,然后您可以稍后在函数中使用它

    <a onclick="openClose(this)">Click</a>
        <div class="spoilermain">content</div>
    

    js

    function openClose(obj){
        $(obj).next('.spoilermain').toggle();
      // this is available here
    }
    

    演示:

    function openClose(obj){
        $(obj).next('.spoilermain').toggle();
      // this is available here
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <a onclick="openClose(this)">Click</a>
        <div class="spoilermain">content</div>

    【讨论】:

    • 你的函数会抛出一个js错误Uncaught SyntaxError: Unexpected token this
    • @MichalPaszkiewicz 已更新并正在工作,请您收回您的投票,重点是在参数中传递“this”
    猜你喜欢
    • 2019-05-27
    • 2011-10-19
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多