【问题标题】:JQUERY href disabling issueJQUERY href 禁用问题
【发布时间】:2011-01-07 06:46:17
【问题描述】:

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

这是否像我认为的那样棘手?

在此处添加了用于测试目的的沙箱:http://jsbin.com/aboke/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);
    });         

【问题讨论】:

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


    【解决方案1】:

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

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

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

    rest of the documentation

    【讨论】:

    • 使用 event.preventDefault();似乎没有改变交易,但我编辑了我的帖子以添加我测试的内容......
    • 为了清楚起见,event.preventDefault() 在 IE 中使用 jQuery 解析为 return false,但 preventDefault 是首选抽象,即使两者都“有效”。
    【解决方案2】:

    http://jsbin.com/aboke/2 的沙盒代码有很多错误。这里有一些:

    1.函数参数是一个字符串,但作为数字传递

    您应该在此处为参数加上引号:

    renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);
    

    2。参数与 span id 不匹配

    8a8b8d2e262bde2d01262c08317c000c8a8b8d2e262bde2d01262c08bf83000d

    3.您正在使用 onclick 而不是在 jQuery 中单击

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

    应该是

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

    4.你有一个js错误

    “参数列表后缺少 )”(第 81 行)

    【讨论】:

    • 我去掉了所有的废话,专注于这个 preventDefault() 事情。看看jsbin.com/aboke/4 ,似乎没有任何效果......我很困惑......
    【解决方案3】:
    $(this).click(function() {
        return false; 
    });
    

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

    您可以通过以下方式覆盖默认链接操作:

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

    【讨论】:

    • 抱歉,我投了反对票,因为实际上可以使用 jQuery。
    猜你喜欢
    • 2012-06-14
    • 2012-06-27
    • 2011-07-04
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2015-10-29
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多