禁用链接不起作用

时间:2010-09-20 16:56:52

标签: jquery

我正在处理日历,并希望在提交表单后禁用链接。

日历由链接(rel="box")组成,用于打开带有预订表单的灯箱。填写表单后,我想通过将rel设置为rel="noshow"来禁用相应的链接。

首先的脚本应该检查链接的rel属性。如果是rel="box"灯箱是开放的,当它是空的时,将遵循正常的目的地,当它是rel="noshow"时,什么都不会发生..

我目前有以下代码,它会打开一个灯箱并在需要时跟随正常目的地,但整个rel="noshow"部分似乎无效...


 $("a").click(function(){
  if(this.rel == "noshow"){
   this.preventDefault();
   return false;
  }else if(this.rel == "box"){
   [..]
   $("#closeBox").click(function(c) {
    c.preventDefault();
    var parentCell = $("#date"+linkID[1]+linkID[2]+linkID[3]);
    var childLink = parentCell.children();
    parentCell.css("background-image","url('reserved-green.jpg')");
    childLink.attr("rel","noshow");
    alert(childLink.attr("rel"));
   });
   [..]

当表单关闭时,alert()表示noshow但是当我点击链接时它只跟随href值

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

this.preventDefault()替换为e.preventDefault()并添加e参数 (或者只是移除那一行; return false;做同样的事情)

答案 1 :(得分:0)

这种情况正在发生,因为您遇到了JavaScript错误。

当您致电this.preventDefault();时,this是对链接的引用,而不是事件对象。因此,如果您要发送此活动,则需要调整点击事件签名以首先包含该活动。

$("a").click(function(event){
  if(this.rel == "noshow"){
    event.preventDefault();
    return false;
  }
});

尽管如此,.preventDefault()电话是不必要的。 return false语句将正确阻止这些实例中的点击。