【发布时间】:2014-03-12 09:38:00
【问题描述】:
我正在尝试从同一链接的单击处理程序中触发链接上的单击事件。我想停止链接导航,直到用户收到某些操作的通知。操作完成后,链接应正常导航。
请看下面的测试用例。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<script language="javascript" type="text/javascript">
$(function () {
$("#test").click(function (e) {
var lnk = $(this);
if (lnk.data("checked") != true) {
var notice = $('<a href="#">Continue</a>');
$('body').append(notice);
notice.click(function (e) {
lnk.data("checked", true);
lnk.click();
return false;
});
return false;
}
alert("should navigate now");
});
});
</script>
<a id="test" href="http://www.google.com">Test</a>
</body>
</html>
此示例的预期行为是;
- 点击测试
- 出现继续
- 继续点击
- 页面导航到'Test'的href
相反,当单击继续时,会显示“现在应该导航”警报,但浏览器不执行任何操作。
【问题讨论】:
-
手动触发点击事件可能不会触发元素的默认行为
-
检查
lnk.data("checked")的类型,可以认为不是falsy -
@ArunPJohny 你有这方面的参考吗?
-
@u_mulder 这就是我检查
!= true的原因,它涵盖了null、""、undefined、false或除true之外的任何内容:)
标签: jquery