我有三个文章标签,每个标签都有1个部分,我需要动画出现,即高度从0px到任何px。每篇文章都有一个ID,为每个人点击事件的最有效方式是什么,而不必为每个单独的ID编写单独的函数,即是否存在“获取点击文章的ID”类型方法?使用jQuery切换特定类[误导?]
感谢
我有三个文章标签,每个标签都有1个部分,我需要动画出现,即高度从0px到任何px。每篇文章都有一个ID,为每个人点击事件的最有效方式是什么,而不必为每个单独的ID编写单独的函数,即是否存在“获取点击文章的ID”类型方法?使用jQuery切换特定类[误导?]
感谢
这是我会做什么,
jQuery:
$('.art h1').on('click', function() {
$(this).parent().find('p').stop(true).slideToggle();
});
HTML:
<div class="art">
<h1>Some article stuff</h1>
<p>text goes here</p>
</div>
小提琴:JSFIDDLE
如果你想让它滑动起来,只有一次一个开放的,那么你可以做一个小修改,像这样,
jQuery:
$('.art h1').on('click', function() {
$('.art p').slideUp();
$(this).parent().find('p').stop(true).slideToggle();
});
很好的答案非常感谢! :) – user3105607
有一个后续问题,我怎么能让它没有注册每篇文章的部分内的任何点击,因为我有一个窗体里面,当点击时,导致整个事情再次崩溃。谢谢 – user3105607
你能否提供一个jsfiddle让我看看结构? –
您可以用逗号将多个选择:
$('#id1,#id2,#id3').click(function() {
$(this).animate(...);
});
...或者你可以添加class="something"
每个元素,只是选择:
$('.something').click(function() { ... });
如果点击任何文章,这不会显示所有文章的部分?或者逗号作为'ors'?感谢您的回答 – user3105607
不,您将点击处理程序附加到每个选定元素。当这个处理函数被调用时,它的'this'被设置为实际被点击的元素。 – josh3736
使用类为click事件,而不是ids ..然后,您可以使用id或某些其他属性来标识要展开的文章。
$('.someClass').click(function() {
thisId = $(this).attr('id');
$('#whereTheSectionsAre').find('.active').removeClass('active').next().slideUp(400);
$(thisId+'article').toggleClass('active').next().slideDown(400);
return false;
});
你可以在这里查看一些例子,主要是如果该ID是动态的:
第一种方法是在一个已经提出,但具有动态的ID:
$('div[id^="id_"]').text("Changed by regexep");
第二个如果你的搭配比较硬核使用过滤器:
var reg = new RegExp(/ id_ \ d + /);
$('div[id^="id_"]')
.filter(function(index, item) {
return reg.test(item.id);
})
.text("Changed by filter and regexp");
选择后,你可以应用你想要的行为。检查JSBin玩耍。
$(this).id?或$(this).get(0).id也许..应该在那里 – falstro