【问题标题】:how to call jQuery(this) from anchor tag onclick function如何从锚标记 onclick 函数调用 jQuery(this)
【发布时间】:2013-09-28 05:33:28
【问题描述】:

我有

 <ul>
            <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Test</a></li>
            <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Test fdgfdgfdgfdgfdgfdgfdgfdg fdg</a></li>
            <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Plan</a></li>
            <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">Test</a></li>
        </ul>

代码并希望将类名添加到标签父标签li,即class="selected" bu sing jquery。 我使用了这个 jquery 代码

function setSelectedTestPlan() {
        jQuery("#tree ul li").each(function () {
            jQuery(this).removeClass("selected");
        });

        jQuery(this).closest('li').addClass("selected");
    }

但是jQuery(this).closest('li').addClass("selected");这行不行...

请帮帮我...

【问题讨论】:

  • 取决于函数中的this
  • 'this' 是窗口对象,调试它会给你答案

标签: javascript jquery html


【解决方案1】:

HTML

<li><a onclick="setSelectedTestPlan(this);" href="javascript:void(0);">New Test</a></li>

js

function setSelectedTestPlan(el) {      
       jQuery("#tree ul li").removeClass("selected");
       jQuery(el).closest('li').addClass("selected");
    }

js

function setSelectedTestPlan(el) { 
   jQuery(el).closest('li').addClass("selected").siblings().removeClass("selected");
}

【讨论】:

  • 这将在右键单击并打开一个新选项卡或 Ctrl+单击(命令+单击)时起作用。还有其他方法可以实现吗?
【解决方案2】:

你需要像这样通过函数发送元素

HTML

onclick="setSelectedTestPlan(this);"

js

function setSelectedTestPlan(ele) {      
       jQuery("#tree ul li").each(function () {
            jQuery(this).removeClass("selected");
        });

        jQuery(ele).closest('li').addClass("selected");
    }

【讨论】:

    【解决方案3】:

    一行:

    jQuery(this).closest('li').addClass("selected").siblings().removeClass("selected");
    

    但您必须修改您的事件以通过“this”;

    onclick="setSelectedTestPlan(this);"
    

    【讨论】:

      【解决方案4】:
      function setSelectedTestPlan(e) {
          jQuery("#tree ul li").each(function () {
              jQuery(this).removeClass("selected");
          });
      
          jQuery(e).closest('li').addClass("selected");
      }
      
       <li><a onclick="setSelectedTestPlan(this);" href="javascript:void(0);">New Test</a></li>
      

      替代方案

          <ul>
              <li><a class="mylink" href="javascript:void(0);">New Test</a></li>
              <li><a class="mylink" href="javascript:void(0);">New Test fdgfdgfdgfdgfdgfdgfdgfdg fdg</a></li>
              <li><a class="mylink" href="javascript:void(0);">New Plan</a></li>
              <li><a class="mylink" href="javascript:void(0);">Test</a></li>
          </ul
      
      
      $(function(){
      $(".mylink").click(function(e){
           $(".mylink").parents("li").removeClass("selected");
           $(this).parents("li").addClass("selected");
           e.preventDefault();   
         });
       });
      

      【讨论】:

        【解决方案5】:

        HTML

        <li><a onclick="setSelectedTestPlan.call(this, event);" href="javascript:void(0);">New Test</a></li>
        

        JS

        function setSelectedTestPlan(e) {
           jQuery(this)closest('li').addClass("selected").siblings().removeClass("selected");
        }
        

        【讨论】:

          猜你喜欢
          • 2010-10-28
          • 2015-07-30
          • 2017-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多