JQUERY href проблема отключения - PullRequest
3 голосов
/ 20 января 2010

В настоящее время я работаю над созданной на дому полной фронт-офисной CMS на 100% javascript, и у меня возникли серьезные проблемы. Некоторые из редактируемых областей, которые пользователь может редактировать, содержатся в ссылке href. Эти ссылки НЕ доступны для редактирования, однако, когда пользователь нажимает на эти зоны (в режиме редактирования), браузер переходит по этим ссылкам.

Во-первых, вот пример HTML, сгенерированный CMS:

<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);
    });         

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Да, это возможно, но не с помощью оператора return. Использовать protectDefault ();

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

Кроме того, нет необходимости делать .each (), если вы ничего не делаете со ссылками. Но используйте event.preventDefault ().

См. остальная часть документации .

2 голосов
/ 20 января 2010

Ваш код песочницы на http://jsbin.com/aboke/2 содержит много ошибок. Вот несколько из них:

1. аргумент функции является строкой, но передается как число

Вы должны поставить кавычки вокруг аргумента здесь:

renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);

2. аргумент не совпадает с идентификатором диапазона

8a8b8d2e262bde2d01262c08317c000c против 8a8b8d2e262bde2d01262c08bf83000d

3. Вы используете onclick вместо click в jQuery

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

должно быть

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

4. У вас ошибка js

«отсутствует» после списка аргументов »(строка 81)

0 голосов
/ 20 января 2010
$(this).click(function() {
    return false; 
});

^ не работает. Использование $(...).click() добавляет эту функцию в список функций, которые она выполняет при нажатии. Он не удаляет поведение по умолчанию при переходе по ссылке.

Вы можете переопределить действие ссылки по умолчанию, выполнив:

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