jQuery-重新定位div onclick以与表行对齐

时间:2012-07-02 17:54:34

标签: jquery css model-view-controller

正如我所说的另一篇文章,我对jQuery没有多少经验,我为此道歉。我想做的事情似乎相当简单。

概述: 我有一个用div包裹的桌子。在该表中,每行代表一个不同的元素。我进行了设置,以便在每行中单击一个链接时,该元素的相应数据将显示在表格旁边的div中。这部分有效。

我正在尝试做什么: 我希望弹出div的顶部显示内嵌所选的表行。

这是我的简化代码:

    <div id="container" style="display:inline-block">
       <table>
          <tr id="selected_row">
             <td>
                <a href="/gohere" onclick="updatePos('#param_detail_container');">
                   @Html.DisplayFor(model => item.Name)
                </a>
             </td>
          </tr>
       </table>
    </div>

    <div id="popupDiv" style="display:inline-block; position:absolute; ">
        Contenet in here...
    </div>

脚本:

    <script type="text/javascript" src="~/Scripts/jquery-1.6.2.min.js"></script>
    <script type="text/javascript">
       $(document).ready(function updatePos(popupDiv) {
          var top = $('#selected_row').offset().top;
             popupDiv.css({ top: top + "px" }).show();
          });
    </script>

我收到以下错误:

    Microsoft JScript runtime error: Unable to get value of the property 'replace': object is null or undefined

'replace'位于jquery1.6.2.min.js内。我假设这与我如何设置popupDiv的top属性有关。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

函数必须是全局函数,因此请将其放在ready之外:

/*$(document).ready(function() {

});*/

function updatePos(popupDiv) {
      var top = $('#selected_row').offset().top;
      $(popupDiv).css({ top: top + "px" }).show();
   }

在您的情况下无需使用$(document).ready

答案 1 :(得分:0)

如果这有帮助,请告诉我。

<script type="text/javascript" src="~/Scripts/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
   $(document).ready(function(){
      function updatePos(popupDiv) {
         var top = String($('#selected_row').offset().top);
             $(popupDiv).css("top", top + "px").show();
         };
      });
</script>