从href onclick加载jQuery函数

时间:2010-05-18 07:54:06

标签: jquery onclick modal-dialog partial-views

我有一个HTML表,每行有一列,这个html代码在<td></td>标记内:

 <a onclick="modalDialog(this); return false;" href="javascript:void(0)">17795</a>
    <div style="display: none;" class="MessageDataDiv">
     some text to show up in my jquery modal window when function modaldialog is clicked.
    </div>

onclick链接中触发href时调用的jQuery函数

function modalDialog(event) {
        $('a.message').click(function () {
         var div = new $(this).closest("td").find(".MessageDataDiv").clone();
         div.show().dialog();
          event.preventDefault();
        });
    }

如何编写jQuery函数,以便函数仅在单击链接时触发一次?我需要将jQuery函数modalDialog作为一个单独的函数,因为html表使用AJAX部分渲染。

问题是当我第一次点击一个href链接时没有任何反应,第二次点击链接给我两个模态对话框,第三次点击给我三个模态对话框等等...

3 个答案:

答案 0 :(得分:1)

你可以使用这样的东西;

首次参赛:

  function modalDialog(event) {
    if (!$(document).data("clicked"))
    {
      $(document).data("clicked", true);
      $('a.message').click(function () {
        var div = new $(this).closest("td").find(".MessageDataDiv").clone();
        div.show().dialog();
        event.preventDefault();
      });
    }
  }

你也可以使用“return false”来逃避而不是触发event.preventDefault();

答案 1 :(得分:1)

我会这样做。我会从这样的标记开始:

<div class="message">
  <a href="#">17795</a>
  <div>some text to show up in my jquery modal window when function modaldialog is clicked.</div>
</div>

使用CSS:

div.message > div { display: none; }

和JS:

$("div.message > a").one("click", function() {
  $(this).next().dialog();
  return false;
});

答案 2 :(得分:1)

我认为最简单的方法是让一个div显示其他所有文本。

<div id="MessageDataDiv"></div>

<script>
$(function() {
  $('#MessageDataDiv').dialog({ autoOpen: false });
});
function modalDialog(a) {
  if($(a).data('clicked')) return false;
  $(a).data('clicked', true);
  $('#MessageDataDiv').html($(a).next().text()).dialog();
  return false;
}
</script>

这样,您无需在每次打开对话框时创建。