使用“this”的相同ID不同类

时间:2011-08-11 18:43:01

标签: jquery

我有两组项目,一组是我的jQuery将类视为可点击的项目并抓取id,它对另一组具有不同类但具有相同id的相应项执行任务。 现在我已经让它提醒我这样的身份:

$(".class1").click(function(){
    alert(this.id);
});

我是否可以执行以下操作以更改相应项目的高度:

$(".class1").click(function(){
    $(".class2".this.id).animate({width:"400px", opacity:1}, 400 );
});

编辑(美国东部时间15:08)

我实际上有两个独立的DIV相互作用。我不知道ID唯一性规则,我可以通过在第二个DIV中使用子类来做同样的事情吗?

<div class="class1">Click Me!</div>
<div class="class2 class1">Stuff happens here</div>

$(".class1").click(function(){
    $(".class2 "+this.class).animate({width:"400px", opacity:1}, 400 );
});

3 个答案:

答案 0 :(得分:1)

是的,但您的代码中存在语法错误。这是固定的:

$(".class1").click(function(){
    $(".class2 #" + this.id).animate({width:"400px", opacity:1}, 400 );
});

从技术上讲,在类的上下文中指定ID是多余的(并且速度较慢!),因为ID是(应该是)唯一的。

$(".class1").click(function(){
    $("#" + this.id).animate({width:"400px", opacity:1}, 400 );
});

实际上,您甚至可以从DOM对象中获取jQuery对象:

$(".class1").click(function(){
    $(this).animate({width:"400px", opacity:1}, 400 );
});

答案 1 :(得分:0)

元素的ID必须始终在页面上是唯一的。在你的情况下,由于类名是不同的,你可以使用类名并找到元素。试试这个

$(".class1").click(function(){
    $(".class2").animate({width:"400px", opacity:1}, 400 );
});

答案 2 :(得分:0)

你没有为两个不同的元素分配相同的ID吗?

如果是这样,你不应该。

如果没有,那么为什么不做$(this).animate({width:"400px", opacity:1}, 400 );