JQUERY禁用href问题

3

我目前正在开发一个自制的全前端100%JavaScript CMS,并且遇到了一些问题。用户可以编辑的某些可编辑区域包含在href链接中。这些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是我的周围的时。

这对我来说真的很棘手吗?

<****编辑****> 为了测试目的,添加了一个沙盒,网址在此:http://jsbin.com/aboke/2

<****编辑2****> 我不明白的是,alert(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);
    });         
3个回答

3
是的,这是可能的,但不是通过return语句。使用preventDefault();
var referenceZone = $(this).attr("id");
$("#"+documentId+" a").click(function(event) {
    event.preventDefault();
});

此外,如果您没有对链接进行其他操作,则无需使用.each()。但请使用event.preventDefault()。
请参见文档的其余部分

使用event.preventDefault()似乎没有改变交易,但我编辑了我的帖子以添加我测试的内容... - pixelboy
为了清晰起见,在使用jQuery时,event.preventDefault()在IE中解析为return false,但是preventDefault是首选的抽象,即使两者都可以使用。 - David Hellsing

2
您在http://jsbin.com/aboke/2的沙盒代码有许多错误。以下是其中的一些: 1. 函数参数为字符串,但却传递了数字 您应该在此处添加引号:
renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);

2. 参数与span id不匹配

8a8b8d2e262bde2d01262c08317c000c8a8b8d2e262bde2d01262c08bf83000d 不匹配。

3. 在jQuery中你使用了onclick而不是click

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

应该是

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

4. 你有一个js错误

"参数列表后缺少 ')' " (第81行)


我把所有无关的东西都去掉了,专注于这个preventDefault()。请看http://jsbin.com/aboke/4,似乎什么都不起作用...我很困惑... - pixelboy

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

^ 不起作用。使用 $(...).click() 将该函数添加到单击时执行的函数列表中。它不会删除默认的跟随链接行为。

您可以通过执行以下操作来覆盖默认链接操作:

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

抱歉,我投了反对票,因为使用jQuery实际上是可能的。 - Kordonme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接