试试这个:
$( "[id^='click']" ).click(function () { $("#"+$(this).attr("id").replace("click", "slide")).slideToggle("slow"); });
在您单击的html元素中添加一个类,您可以使用data属性来保存您的值
<div class="clickme" data-something="1"></div> $(".clickme").click(function(){ var targetNum = (this).data("something"); var targetId = "#slide" + targetNum; $(targetId).slideToggle("slow"); });
这有效,但我认为可能还有更好的解决方案
for ( i= 0; i < 12; i++){ var x = (i !== 0) ? + i : '' ; $("#click" + x).data('slide', x).on('click', function(){ var slide = $(this).data('slide'); $("#slide" + slide).slideToggle("slow"); }); };
http://jsfiddle.net/x9eCM/1/
您没有显示HTML,这将极大地帮助指导答案,但假设您有一个类似的结构:
<div id="click"></div> <div id="slide"></div> <div id="click2"></div> <div id="slide2"></div> etc.
然后你可以做一些类似的事情
<div class="click"></div> <div class="slide"></div> <div class="click"></div> <div class="slide"></div> etc.
并编写你的jQuery
$(".click").click(function() { $(this).next(".slide").slideToggle("slow"); }
使用类而不是ID的方法应该是您的一般方法。唯一的变量是我列出的内容 next(".slide") 因为这可能会因HTML元素相对于彼此的放置方式而有所不同。
next(".slide")
给他们一个属性将它们绑在一起,例如:
$('.click').click(function () { $($(this).attr('data-toggle-target')).slideToggle('slow'); }); <div class="click" data-toggle-target="#click12">I trigger a slide toggle</div>
你可以使用你想要的任何东西将它们真正联系在一起。通常如果你使用链接最好jsut使用哈希引用,如:
<a class="click" href="#the-target">I trigger a slide toggle</a>
这样一来,如果没有启用js,它会跳转到您要切换的潜水。如果它是你得到切换 - 但如果你这样做,你需要防止默认:
$('a.click').click(function (e) { e.preventDefault(); $($(this).attr('href')).slideToggle('slow'); });