操纵众多其中之一?
我有一些标记,像这样......操纵众多其中之一?
<div id="items">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
我想写一些功能影响每一个使用jQuery。像...
$(".item").click(function(i){
i.hide();
});
有人可以给我一个简单的解释如何使这项工作?我应该使用.each()吗?
它也能工作,而不每个
$(".item").click(function() {
$(this).hide();
});
$('.item').each(function(index){
$(this).bind('click', function(){
$(this).hide();
//alert("hiding item nr: "+index);
});
});
您想在处理函数中使用$(this)
而不是i
。该处理程序的参数是event object,其中包含有关该事件的信息(例如鼠标坐标所在的位置以及其他内容)。可能在i
的某处是被点击的对象,但您可以使用this
更容易地访问“无论哪个对象被点击”。
您不必使用each
,因为jQuery自动将处理程序绑定到由查询".item"
匹配的每个元素。
$(".item").click(function(i){
$(this).hide();
});
编辑:新增$(...)
各地this
,如the documentation指示。 (出于某种原因,它的工作对我来说没有$,但显然你需要它。)
你可以做到这一点:)
$(".item").live('click',function(){
$(this).hide();
});
是的,你可以使用每个,像这样:
$(".item").each(function(){
//Here, use $(this) to reference current element
$(this).hide();
});
.each()
将您传递给匹配选择器中每个元素的函数应用到当前元素的this
。
它有可选的参数和其他东西。在这里你可以了解更多:http://api.jquery.com/jQuery.each/
希望这会有所帮助。干杯
这将隐藏每个项目,而不是像问题中的代码试图执行的那样在每个项目上设置单击事件处理程序。 – mgiuca
(a)文档清楚了解事件处理程序的作用。 (b)和大多数jquery方法一样(例外情况全部明确说明它们是例外情况),.click
将应用于由jquery对象选择的每个集合的成员。所以,不,你不需要使用.each
,如果你想让他们每个人都安装与事件处理程序相同的功能。
(c)this
或event.currentTarget
(或在您的示例中,i.currentTarget
)是访问作为事件接收方的dom节点的方式。你的例子中的i
将是事件对象。
这有希望做你想做的。让我们知道这是否有效,希望有所帮助。
$(".item").each(function(){
$(this).click(function() {
$(this).hide();
});
});
除非我记错了,你不需要'each'因为jQuery自动应用到动作每一个匹配的元素。如果你真的想要遍历元素,你只需要每个元素(例如,如果你想'alert'每个元素,如[每个文档]中的示例所示(http://api.jquery.com/each /))。另外,你不需要'.bind('click',...)';使用'.click(...)'作为OP已经足够,并且更干净。 – mgiuca
是的,我知道。我只是想,也许人们想知道索引。因此警报是作为评论。绑定('点击',...我使用更好的可读性的原因...我不这样做,因为昨天mgiuca :-) – helle