我有多个按钮,如:
#recent_post_button_54
,#recent_post_button_55
等。
当我点击按钮#recent_post_button_54
时,我希望它切换相应的#recent_post_content_54
div。
我的代码是:
jQuery(document).ready(function($) {
var buttons = $('.recent_post_header button');
for (var i = 0; i< buttons.length; i++) {
var id = (buttons[i].id).match(/\d+$/)[0];
$("#recent_post_button_"+id).click(function() {
console.log("I've clicked #recent_post_button_"+id);
$("#recent_post_content_"+id).toggle();
});
}
});
我有三个带有ID 54,52,50的按钮。但是使用此代码,我会为所有按钮获取I've clicked #recent_post_button_50
,并且所有按钮仅使用id 50
切换最后一个内容div。
此代码有什么问题?
答案 0 :(得分:3)
在id上使用^
(以...开头)表达式。另外,要获得相应的目标div,请替换单词&#34; post&#34;与&#34;内容&#34;。
$("input:button[id^='recent_post_button']").click(function()
{
var id = $(this).attr("id");
var contentID = id.replace("button","content");
$("#" + contentID).toggle();
});
缩小:
$("input:button[id^='recent_post_button']").click(function()
{
$("#" + $(this).attr("id").replace("button","content")).toggle();
});
答案 1 :(得分:0)
尝试此解决方案using event delegation
jQuery(document).ready(function($) {
$('.recent_post_header').click('button' , function(evt){
var $but = $(evt.target);
var id = $but.attr('id');
alert( "I've clicked #recent_post_button_" + id);
$("#recent_post_content_"+ id).toggle();
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='recent_post_header'>
<button id='54'>button 54</button>
<button id='52'>button 52</button>
<button id='50'>button 50</button>
</div>
<div id='recent_post_content_52'>
post 52
</div>
<div id='recent_post_content_50'>
post 50
</div>
<div id='recent_post_content_54'>
post 54
</div>
答案 2 :(得分:0)
对所有这些按钮使用通用类,如此链接中所示(我创建了一个plunker:http://plnkr.co/edit/1xFhmDSo8LUCztDQF9ma)。您可以根据需要修改选择器。假设您有这样的按钮,您可以使用如下所示的代码:
<button type="button" id="recent_post_button_54" class="dynamicIdButton">Button1</button>
<button type="button" id="recent_post_button_52" class="dynamicIdButton">Button1</button>
<button type="button" id="recent_post_button_50" class="dynamicIdButton">Button1</button>
<script>
$(".dynamicIdButton").click(function() {
alert('I have clicked! : ' + this.id);
});
</script>