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();
});