如何使每个按钮可点击?

时间:2018-02-27 23:57:25

标签: jquery json node.js ejs

所以我循环遍历JSON对象并在View中呈现数据。每个对象还有一个我创建的按钮。当我打电话给那个按钮的想法做一些动作时,只有第一个按钮有效。这是html代码:

<div class="row text-center" style="display:flex; flex-wrap: wrap;">
    <% data["Search"].forEach((movie) => { %>
      <div class="col-md-3 col-sm-6">
        <div  class="thumbnail">
          <div class="caption">
            <li><%= movie["Title"] %></li>
            <li><%= movie["Year"] %></li>
            <li id="id"><%= movie["imdbID"]%></li>
          </div>
          <img  src="<%= movie["Poster"] %>" alt="">
          <button id="clickable"  type="button" name="button">Get More details About The Movie</button>
        </div>
      </div>
    <% }) %>
</div>
</div>

正如你所能,按钮有id="clickable"。这是jQuery的代码:

<script  type="text/javascript">
$(document).ready(function(){
//alert(this).data("#hello");
$( "#clickable" ).click(function() {
  var item = $("#id").text();
  alert('Selected Name = ' + item );
});
});

现在我只是显示id="id"数据。假设我点击id="clickable"时循环播放10部不同的电影但只有第一部电影有效。

感谢。

1 个答案:

答案 0 :(得分:-1)

这是你的标记。

<div class="col-md-3 col-sm-6">
    <div  class="thumbnail">
      <div class="caption">
        <li><%= movie["Title"] %></li>
        <li><%= movie["Year"] %></li>
        <li id="id"><%= movie["imdbID"]%></li>
      </div>
      <img  src="<%= movie["Poster"] %>" alt="">
      <button id="clickable"  type="button" name="button">Get More details About The Movie</button>
    </div>
  </div>

问题是您有重复的ID clickableid。这些都需要是类,因为DOM中的重复ID是无效标记。

<div class="col-md-3 col-sm-6">
    <div  class="thumbnail">
      <div class="caption">
        <li><%= movie["Title"] %></li>
        <li><%= movie["Year"] %></li>
        <li class="id"><%= movie["imdbID"]%></li>
      </div>
      <img  src="<%= movie["Poster"] %>" alt="">
      <button class="clickable"  type="button" name="button">Get More details About The Movie</button>
    </div>
  </div>

现在我们只需要修改绑定和id查找以使用类。

$(document).ready(function(){
    //bind on the class
    $( ".clickable" ).click(function() {
        //the relation of clickable to id is, they are both children of the thumbnail.
        //so we can go up from the clickable we clicked to it's parent
        //thumbnail, and then find the nested id
        var item = $(this).closest('.thumbnail').find(".id").text();
    });
});