2010-09-20 125 views
0

我正在處理日曆,並希望在提交表單後禁用鏈接。禁用鏈接不起作用

日曆由鏈接(與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")); 
    }); 
    [..] 

當窗體關閉警報()說NOSHOW但是當我點擊它只是遵循href值

上午什麼我在這裏做錯了嗎?

回答

0

發生這種情況是因爲您遇到JavaScript錯誤。

當您撥打this.preventDefault();時,this是對鏈接的引用,而不是事件對象。所以如果你想發送這個事件,你需要調整你的點擊事件簽名來首先包含事件。

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

雖然真的,.preventDefault()調用是不必要的。 return false語句將適當地阻止這些實例中的點擊。

+0

工作正常,謝謝! – Maurice 2010-09-22 16:07:37

1

this.preventDefault()替換爲e.preventDefault()並添加e參數。
(或者只是刪除該行; return false;做同樣的事情)