我有这段代码:
$('#sh1').hover(function(){$('#tip1').toggle()});
$('#sh2').hover(function(){$('#tip2').toggle()});
$('#sh3').hover(function(){$('#tip3').toggle()});
$('#sh4').hover(function(){$('#tip4').toggle()});
等
元素数量可以是30-40。显然这不是做这种事情的正确方法。但是我该怎么做呢?使用“for”循环或“if”条件或正则表达式还是什么?
标记将如下:
<div>
<div id="sh1"></div>
<div id="sh2"></div>
<div id="sh3"></div>
<div id="sh4"></div>
</div>
<div class="tip" id="tip1">text</div>
<div class="tip" id="tip2">text</div>
<div class="tip" id="tip3">text</div>
<div class="tip" id="tip4">text</div>
答案 0 :(得分:1)
你可以使用经典的for
循环,这是另一个简单的解决方案:
$(function () {
$('[id^="sh"]').hover(function () {
var index = $(this).attr('id').replace('sh', '');
$('[id="tip' + index + '"]').toggle();
});
});
答案 1 :(得分:0)
使用属性选择器(即 Attribute Starts With Selector [name^="value"] ),即可实现
假设sh
和tip
是div的
$('div[id^="sh"]').hover(function(){$('div[id^="tip"]').toggle()});
$('div[id^="sh"]').hover(function() {
var id = $(this).attr("id");
id = parseInt(/\d+/.exec(id), 10);
$("#tip"+id).toggle();
});
参考 LIVE DEMO
答案 2 :(得分:0)
为要循环的每个元素添加一个类并添加:
$(".YourClass").).hover(function(){$(this).toggle();});
答案 3 :(得分:0)
您可以为要触发的每个元素放置一个类,并将其用作选择器:
这样的事情:
$('.YourClass').hover(function(){$(this).toggle()});
希望这会有所帮助。问候。
答案 4 :(得分:0)
#sh1,#sh2,etc
与一个.sh
和#tip1,#tip2,etc
与名为.tip
的类一起引用。 tip
组位于sh
组内,请使用jquery的遍历技术导航到该元素。除了关于性能的优化之外,还可以仅取决于标记。