Javascript 如何在鼠标单击时显示隐藏的i标记

Javascript 如何在鼠标单击时显示隐藏的i标记,javascript,jquery,Javascript,Jquery,我有一个李如下 <li class="active"> <a href="#" onclick="editCategory(this)" class="active" value="14-client" id=""> qqqq <i class="glyphicon glyphicon-trash pull-right" style="display:none"></i></a> </li&

我有一个李如下

<li class="active">
        <a href="#" onclick="editCategory(this)" class="active" value="14-client" id=""> qqqq
        <i class="glyphicon glyphicon-trash pull-right" style="display:none"></i></a>
    </li>
因此,当我单击锚定标记时,警报工作
alert('category')
,但没有显示I标记

有人能指出我犯的错误吗?

这是一个参数问题,而不是其他问题:$(id)而不是$(this)
$(id)
而不是
$(this)

因为
$(this.children().show()
指功能的
,而非
标签的

演示:

使用此选项
是您的

您已经将此
作为参数传递给
editCategory(id)
函数,该函数由
id
引用

function editCategory(id)
{
    alert('category');
    $(id).children('i').show();
}

其他选择

$('i',id).show();
使用:



您还缺少
$(document).ready(function(){…})javascript
中,如果您正在使用
JQuery
请确保在
DOM
准备好后,它就准备好了。
因此,我将您的代码更改为:

$(document).ready(function(){
 // Here $(this) will be `document` object
   $(".active").click(function(){ 
      //alert('category');
      $(this).find('i').show("100");  // Now this refers to object from which event is bubbled or generated.
    }); 
});
您的
html
将是:

<a href="#" class="active" value="14-client" id="qqq"> qqqq
        <i class="glyphicon glyphicon-trash pull-right" style="display:none">aaa</i></a>
您正在将
id
作为对象
this
(锚定obj)传递到函数,并且
$(this)
(您正在访问的对象)现在正在引用(在您的情况下)到
窗口
对象

希望能有帮助。

试试看(把这个放在
之间):

使用此
HTML

<li class="active">
    <a href="#" class="active" value="14-client" id=""> qqqq
        <i class="glyphicon glyphicon-trash pull-right" style="display:none"></i>
    </a>
</li>
  • 试试这个

    $("li.active a.active").click(function() {
            $(this).find("i").show();
    
    });
    


    您能解释一下为什么我不应该使用$this,因为您将id作为参数传递:editCategory(id),它引用元素的此参数。我将此作为参数传递,而不是引用对象吗?谢谢您的回答,+1我有大约15个li。现在如果我单击第一个li,则显示I标记。现在如果我再次单击第二个li,则显示第一个和第二个li。是否可以删除除当前li之外的所有li?为什么使用内联事件处理?@狼人TheAlpha抱歉,不理解为什么不使用
    文档。就绪(…)
    ?@WereWolf TheAlpha对不起,我的js/jquery不好。我使用的方式有什么缺点吗?谢谢你再次回答,+1谢谢。你能告诉我为什么我不应该使用内联javascript吗?当然。看一看:这是我的stackoverflow房间感谢您的回答,+1如果这是一个传递参数的问题,为什么要用find和children('i')替换children()。。请不要重复我的回答。主要问题是paramI有15个li。现在如果我单击第一个li,则会显示I标记。现在如果我再次单击第二个li,则会显示第一个和第二个li。是否可以删除除当前li之外的所有li?标记中可能有许多子项,因此我使用了特定的筛选器。我没有重复你的回答。有上千人使用这些选择器。@JqueryLearner,您希望删除其余的
  • ?感谢您的回答,+1。我有大约15个li,我想显示我单击了谁的a。那么您的回答会有用吗?是的。它仍然有用是的,您只需要为所有相同的元素声明一个事件处理程序。
    i
    标记内没有任何内容,请检查更新的答案的链接。
    $(document).ready(function(){
     // Here $(this) will be `document` object
       $(".active").click(function(){ 
          //alert('category');
          $(this).find('i').show("100");  // Now this refers to object from which event is bubbled or generated.
        }); 
    });
    
    <a href="#" class="active" value="14-client" id="qqq"> qqqq
            <i class="glyphicon glyphicon-trash pull-right" style="display:none">aaa</i></a>
    
    function editCategory(id)
    {
        alert('category');
        console.log($(this)); //or try alert instead of console.log, it Will Log/alert Window Object 
        console.log($(id)); // This will log <a> Object.
        $(id).find('i').show("100");
    }
    
    $(function(){
        $('a.active').on('click', function(e){
            e.preventDefault();
            $(this).find('i').show();
        });
    });
    
    <li class="active">
        <a href="#" class="active" value="14-client" id=""> qqqq
            <i class="glyphicon glyphicon-trash pull-right" style="display:none"></i>
        </a>
    </li>
    
    $("li.active a.active").click(function() {
            $(this).find("i").show();
    
    });