2010-01-20 1 views
3

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

Во-первых, Heres пример 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">

Является ли это так сложно, как мне кажется?

< **** EDIT ****> Добавлена ​​песочница для тестирования здесь: http://jsbin.com/aboke/2

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

ответ

2

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

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

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

renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c); 

2. аргумент делает не соответствует калибровочный идентификатор

8a8b8d2e262bde2d01262c08317c000c против 8a8b8d2e262bde2d01262c08bf83000d

3.Вы используете OnClick вместо мыши в JQuery

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

должен быть

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

4. У вас есть ошибка JS

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

+0

Я отнял всю дерьмо, чтобы сосредоточиться на этой вещи preventDefault(). Взгляните на http://jsbin.com/aboke/4, ничего не работает ... я puzzeld ... – pixelboy

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

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

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

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

Пройдите проверку http://jsbin.com/aboke/2, похоже, не работает. – pixelboy

+0

Извините, но я заблокирован, так как на самом деле возможно использование jQuery. – Kordonme

+0

Нет проблем! Я узнал что-то новое! :) –

3

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

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

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

См. rest of the documentation.

+0

Использование event.preventDefault(); похоже, не изменяет сделку, но я редактировал свой пост, чтобы добавить то, что я тестировал ... – pixelboy

+0

Для ясности 'event.preventDefault()' разрешает ** возвращать false ** в IE с помощью jQuery, но 'preventDefault' является предпочтительной абстракцией, даже если оба «работают». – David

 Смежные вопросы

  • Нет связанных вопросов^_^