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 が私の周囲にある場所<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document">

これは私に思えるほどトリッキーですか?

<**** 編集 ****> ここにテスト目的でサンドボックスを追加しました: http://jsbin.com/aboke/2

<**** 編集 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);
    });         
4

3 に答える 3

3

はい、可能ですが、return ステートメントではできません。preventDefault(); を使用します。

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

また、リンクで何か他のことをしていない限り、.each() を実行する必要はありません。ただし、event.preventDefault() を使用してください。

ドキュメントの残りの部分を参照してください。

于 2010-01-20T13:45:19.940 に答える
2

http://jsbin.com/aboke/2のサンドボックス コードに多くのエラーがあります。ここにいくつかあります:

1. 関数の引数は文字列ですが、数値として渡されます

ここでは、引数を引用符で囲む必要があります。

renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);

2. 引数がスパン ID と一致しません

8a8b8d2e262bde2d01262c08317c000c対。8a8b8d2e262bde2d01262c08bf83000d

3. jQuery で click の代わりに onclick を使用している

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

する必要があります

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

4. js エラーがある

「引数リストの後に ) がありません」(81 行目)

于 2010-01-20T16:16:20.150 に答える
-1
$(this).click(function() {
    return false; 
});

^動作しません。を使用$(...).click()すると、クリック時に実行される関数のリストにその関数が追加されます。リンクをたどるデフォルトの動作は削除されません。

次のようにして、デフォルトのリンク アクションをオーバーライドできます。

this.onclick = function() { return false; }
于 2010-01-20T13:35:55.667 に答える