JQUERY href禁用问题

时间:2010-01-20 13:33:03

标签: jquery content-management-system jquery-selectors href

我目前正在研究我们自制的完整前台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是我周围的<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document">

这在我看来是否很棘手?

&lt; **** EDIT ****&gt; 在此处添加了用于测试目的的沙箱:http://jsbin.com/aboke/2

&lt; **** EDIT 2 ****&gt; 我不明白的是警报(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 个答案:

答案 0 :(得分:3)

是的,这是可能的,但不是通过return语句。使用preventDefault();

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

此外,除非您使用链接执行任何其他操作,否则无需执行.each()。但是使用event.preventDefault()。

请参阅rest of the documentation

答案 1 :(得分:2)

http://jsbin.com/aboke/2处的沙箱代码有很多错误。这里有几个:

<强> 1。 function参数是一个字符串,但作为数字传递

你应该在这里引用参数:

renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);

<强> 2。参数与范围ID

不匹配

8a8b8d2e262bde2d01262c08317c000c8a8b8d2e262bde2d01262c08bf83000d

第3。您正在使用onclick而不是单击jQuery

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

应该是

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

<强> 4。你有一个js错误

参数列表“(第81行)

之后

”缺失“

答案 2 :(得分:-1)

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

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

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

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