javascript - 使用 jquery 切换特定段落不起作用

标签 javascript jquery html google-chrome

我正在尝试让 jquery 函数在表行上工作。我的解决方案基于 following stack overflow question ,但是每当我单击展开链接时似乎什么也没有发生。我尝试调试 JavaScript 代码,但没有成功。

以下是供引用的 HTML 代码:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <style>       td { white-space: pre }       p { display: none }   </style>   
   <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
   <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
   <script>
$("a[data-toggle]").on("click", function(e) {
       e.preventDefault();  // prevent navigating
       var selector = $(this).data("toggle");  // get corresponding element
       $("p").hide();
       $(selector).show();
   });   
   </script>
</head>
<body>
<table class="table table-striped table-condensed table-hover" style="border-collapse: collapse">
<thead>
    <tr>
        <th class="confluenceTh"></th>
        <th class="confluenceTh">a1</th>
        <th class="confluenceTh">a2</th>
        <th class="confluenceTh">a3</th>
    </tr>
</thead>
<tbody>
<tr>  
  <td class="confluenceTd"><a href ="#" data-toggle="#content0">Expand</button></td>
  <td class="confluenceTd">b1</td>
  <td class="confluenceTd">b2</td>
  <td class="confluenceTd">b3</td>
</tr>
<tr>  
<td colspan = "4" class="confluenceTd">
<p id="content1" class="expanding-content">val1</p>
</td>
</tr>
<tr>  
  <td class="confluenceTd"><a href ="#" data-toggle="#content1">Expand</button></td>
  <td class="confluenceTd">c1</td>
  <td class="confluenceTd">c2</td>
  <td class="confluenceTd">c3</td>
</tr>
<tr>  
<td colspan = "4" class="confluenceTd">
<p id="content1" class="expanding-content">val2</p>
</td>
</tr>

</tbody>
</table>
</body>
</html>

谢谢!

最佳答案

您有两个选择:

  1. 将代码包装在 $(document).ready
  2. 将其放在文件底部的 body 标记关闭之后 ( benefits )

您的代码也存在目标元素不匹配的情况。

$("a[data-toggle]").on("click", function(e) {
  e.preventDefault(); // prevent navigating
  var selector = $(this).data("toggle"); // get corresponding element
  $("p").hide();
  $(selector).show();
});
.expanding-content {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table class="table table-striped table-condensed table-hover" style="border-collapse: collapse">
  <thead>
    <tr>
      <th class="confluenceTh"></th>
      <th class="confluenceTh">a1</th>
      <th class="confluenceTh">a2</th>
      <th class="confluenceTh">a3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="confluenceTd"><a href="#" data-toggle="#content1">Expand</button></td>
  <td class="confluenceTd">b1</td>
  <td class="confluenceTd">b2</td>
  <td class="confluenceTd">b3</td>
</tr>
<tr>  
<td colspan = "4" class="confluenceTd">
<p id="content1" class="expanding-content">val1</p>
</td>
</tr>
<tr>  
  <td class="confluenceTd"><a href ="#" data-toggle="#content2">Expand</button></td>
  <td class="confluenceTd">c1</td>
  <td class="confluenceTd">c2</td>
  <td class="confluenceTd">c3</td>
</tr>
<tr>  
<td colspan = "4" class="confluenceTd">
<p id="content2" class="expanding-content">val2</p>
</td>
</tr>

</tbody>
</table>

关于javascript - 使用 jquery 切换特定段落不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698064/

相关文章:

javascript - WordPress 脚本未加载

javascript - Firefox 将添加到动画中的类保留在滚动中

javascript - 获取此 <div> 之外的 <div>

javascript - Angular:将逻辑写入绑定(bind)

javascript - 使用 jquery 根据背景颜色对表格行进行排序

javascript - 识别在 Firefox Addon SDK 中发出请求的选项卡

javascript - 如何以视差设置所有屏幕的屏幕分辨率

javascript - 将 future 时间添加到日期并进行比较

javascript - 在 jQuery 或 Javascript 中切换按钮选择的大小写

javascript - 如何使用 Jquery 播放列表中选定的歌曲并暂停同一列表中正在播放的较早歌曲?