2010-01-20 32 views
3

我目前正在製作一個自制的前臺辦公室100%的我們的JavaScript CMS,我有一個很大的問題。 用戶可編輯的某些可編輯區域包含在href鏈接中。這些href是不可編輯的,但是當用戶點擊這些區域時(在編輯模式下),瀏覽器會遵循這些鏈接。JQUERY href禁用問題

首先,繼承人由CMS生成html的例子:

<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document"> 

    <a href="/actions/ecommerce/viderSelectionPalierEtVitrine"> 
      <img src="/images/logo.gif" id="8a8b8d2e262bde2d01262c08bf83000d" title="" alt="" class="image logo" /> 
    </a>   
</span> 

在此,例如,用戶可以只改變; 於是,我就管理周圍的HREF這樣:

 var referenceZone = $(this).attr("id"); 
    $("#"+documentId+" a").each(function() { 
     $(this).click(function() { 
      return false; 
     }); 
    }); 

凡referenceZone是我周圍<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document">

這是因爲棘手,因爲它似乎給我嗎?

< **** ****編輯> 新增用於測試目的這裏沙箱:http://jsbin.com/aboke/2

< **** EDIT 2 ****> 我不明白的是,警報(event.type)甚至不會啓動!

//click event disabling on any href of curently edited ${"span.document"} 
    $("span#" + documentId + " a").click(function(event) { 
       alert(event.type); 
       event.preventDefault(); 
     suppressionZoneModifiable(documentId); 
      recupererTexte(referenceZone, documentId); 
    });   

回答

2

您的沙箱代碼http://jsbin.com/aboke/2有許多錯誤。這裏有幾個:

1.函數參數是一個字符串,但作爲一個數通過

你應該把周圍參數報價在這裏:

renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c); 

2.說法有不匹配跨度ID

8a8b8d2e262bde2d01262c08317c000c8a8b8d2e262bde2d01262c08bf83000d

3。你在jQuery的使用的onclick而不是點擊

$(this).onclick = function() { return false; } 

應該

$(this).click(function(e) { 
    e.preventDefault(); 
}); 

4.你有一個js錯誤

「失蹤)後,參數列表」(線81)

+0

我帶走了所有的垃圾,專注於這個preventDefault()的東西。看看http://jsbin.com/aboke/4,似乎沒有任何工作...我是puzzeld ... – pixelboy 2010-01-21 09:00:31

-1
$(this).click(function() { 
    return false; 
}); 

^不起作用。使用$(...).click()將該函數添加到它在單擊時執行的函數列表中。它不會刪除鏈接後的默認行爲。

您可以通過執行覆蓋默認鏈接動作:

this.onclick = function() { return false; } 
+0

去檢查http://jsbin.com/aboke/2,似乎沒有工作。 – pixelboy 2010-01-20 13:46:32

+0

對不起,但我低調,因爲它實際上可以使用jQuery。 – Kordonme 2010-01-20 13:46:53

+0

沒問題!我學到了新東西! :) – 2010-01-20 13:49:11

3

是的,這是可能的,但不是通過return語句。使用preventDefault();

var referenceZone = $(this).attr("id"); 
$("#"+documentId+" a").click(function(event) { 
    event.preventDefault(); 
}); 

此外,沒有必要做一個.each(),除非你對鏈接做其他事情。但是使用event.preventDefault()。

請參閱rest of the documentation

+0

使用event.preventDefault();似乎並沒有改變交易,但我編輯我的帖子,以添加我測試的...... – pixelboy 2010-01-20 14:30:07

+0

爲清楚起見,'event.preventDefault()'解決**在IE中使用jQuery返回false **,但'preventDefault'是首選的抽象,即使兩者都「有效」。 – David 2010-01-20 16:17:58