代码之家  ›  专栏  ›  技术社区  ›  Cornell Foreman

使用Handlbars JS和mysql查询填充多张卡,但只有一个按钮起作用

  •  1
  • Cornell Foreman  · 技术社区  · 8 年前

    我在handlebars js中设置了一个模板,用于显示mysql查询中每个条目的信息。代码运行正常,我得到了预期的显示(16张信息卡,带有一个按钮,可以显示更多信息)。

    我遇到的问题是,每个返回的信息卡都有一个div/按钮,单击该按钮时应该显示该卡的更多信息。然而,只有第一个返回的信息卡上的第一个按钮起作用。该按钮按id调用,当我更改为按类调用时,它会同时显示所有16张卡的所有正确信息。其他15个按钮都没有id或类响应。

    有什么建议可以让我在点击所有16张卡片对应的按钮时,让它们各自做出反应吗?

    <div class="force-block"> 
     {{#each taco }} 	//for each loop
      <div id="main-bio-block">
    	<div class="performer-image"><img src="{{this.image}}" class="user-image">
    	</div>
    				<div class="info" id="info-modal">
                    <p>Country: {{this.country}}</p>
    				<p>Earnings: {{earnings}}</p>
    				<p>Wins: {{wins}}  Losses: {{loss}}</p>
    				<p>Titles: {{titles}}  Gold: {{gold}} </p>
    				<p>Silver: {{silver}}  Bronze: {{bronze}}</p>
    				</div>
    			      <div id="user-name"><p>{{this.handle}}</p></div>
         //this is the button in question
                        <div class="modal-btn" id="bio-modal">
                          <p>Bio Info</p>
                        </div>
    		            <div class="modal-btn" id="accolades-modal">
                          <p>Accolades</p>
                        </div>
    //below is the modal hidden until bio-modal is clicked.
    		<div class="many" id="info-1">
    			<span class="close">&times;</span>
    				<div class="info-content">
    					<p>{{bio}}</p>
    				</div>
    		</div>
    
    		</div>
    {{/each}}		
    
    </div>
    
    
    <script type="text/javascript">
    		$('#bio-modal').click(function(){
    			$('#info-1').show();
    		});
    
    		$('.close').click(function(){
    			$('#info-1').hide();
    		});
    
    		
    	</script>
    1 回复  |  直到 8 年前
        1
  •  0
  •   Christophe    8 年前

    从我看到的情况来看,您在循环中多次使用相同的id:

    <div id="main-bio-block">
    
    <div class="modal-btn" id="bio-modal">
    
    <div class="many" id="info-1">
    

    您的ID应该是唯一的,这样它们就不会在页面中出现多次。

    在您的情况下,您将获得循环中使用的每个id的16倍。 相反,您可以使用循环的索引号来生成这样的唯一内容

    <div class="many" id="info-{{@index}}">
    

    生物模态按钮也是一样:

    <div class="modal-btn" onclick="toggleinfo('info-{{@index}}')">
       <p>Bio Info</p>
    </div>
    

    完成此操作后,只需使用如下toggleinfo函数:

    <script type="text/javascript">
            function toggleinfo(id){
                $(id).toggle();
            }
    </script>