1

我有一个表格,其中每一行都可以使用

 echo "<tr class=\"trlink\" onclick=\"location.href='".$row['task_id']."'\">\n";

那里没有问题。

然后我在这一行的一个单元格内有三个链接。指向不同页面的两个工作正常。但是,有一个链接可以切换模式对话框,它不会与标签中包含的 onclick 一起显示。没有它也能正常工作。我使用以下内容作为

<a role=\"button\" href=\"#" . $row['task_id'] . "taskModal\" data-toggle=\"modal\">

每当单击链接时,它都会直接转到分配给 . 我认为问题在于事件冒泡。我做了一些谷歌搜索,发现了一个小的 Javascript 脚本来取消单击模态触发器时的冒泡:

function cancelIt(evt) {
var e = (typeof evt != 'undefined') ? evt : event;
e.cancelBubble = true;
}

<a href=\"...\" onclick=\"cancelIt(event);\" >

在模态触发器上

这解决了单击时加载初始链接的问题,但是模式也不显示。

感谢您的任何帮助。

4

3 回答 3

1

onclick如果您使用 jQuery 检测页面,我不建议使用该事件。相反,使用以click编程方式分配的处理程序。这样可以确保您不会不小心踩到某些东西。

如果没有更多细节(可能是 jsfiddle),很难确定您的特定问题是什么,但您可以尝试的一件事是将某种选择器添加到适当的锚标记,然后使用类似于以下的范例:

<script>
  $(function() {
    $('#anchorTagICareAbout').click(function(e) {
      e.preventDefault();
      displayModalDialog();
    });

  });
</script>
于 2013-01-23T18:11:27.667 回答
0

我有一个可行的解决方案。这可能是一种黑客方式,但它确实有效。请注意,我还将模态框移到<div>之外,<tr>因为当我关闭模态框时,它将遵循<tr>.

<script type="text/javascript">
var trlink = true;
</script>

上面设置了单击时要检查的变量tr onclick

<tr onclick=\"if(trlink) {location.href='google.com'} else { trlink = true; }>

这会在打开链接之前检查 trlink 是否为真,如果不是,则将其设置为真。

<a onclick="trlink = false" role="button" href="#1printerModal" data-toggle="modal">None</a>

最后,在此标记中执行任何操作之前,这会将 trlink 变量设置为 false。

我无法正确处理事件,但这似乎可以解决问题。

于 2013-01-23T21:08:51.220 回答
0

您可以简单地使用“onmousedown”事件。

<a role=\"button\" href=\"#" . $row['task_id'] . "taskModal\" data-toggle=\"modal\" 
onmousedown=\"event.cancelBubble=true;event.returnValue=false;document.location.hash=this.getAttribute('href').replace('#','');return false;\">

这是一个小演示 jsfiddle:http: //jsfiddle.net/r4dnp/6/

始终首选使用适当的脚本分配的事件处理程序,但以上将完成工作。代码的关键部分:

document.location.hash=this.getAttribute('href').replace('#','')

将 document.location.hash 设置为等于链接 HREF 的值。

于 2013-01-23T18:50:27.863 回答