Установка свойства HTML элемента в jQuery - PullRequest
0 голосов
/ 22 декабря 2011

Пожалуйста, проверьте коды ..

$(".editable").live("click",function(){
CurrentOBJhtml = $(this).text();
nextHtml = "<input type='text' class='hoverable' value='"+CurrentOBJhtml+"'  />";
var c = nextHtml;
alert(c); //here two alert box comes....
$(this).html(c);

});

Когда я предупреждаю c, он предупреждает два значения в двух окнах оповещения ...

первое значение <input type='text' value='myname' class='hoverable' /> второй - <input type='text' value='' class='hoverable' />, где второй не имеет value.

Когда я комментирую последнюю строку ($(this).html(c);), она дает только первый результат.

В чем проблема со мной? я в полном замешательстве.

, пожалуйста, помогите мне решить эту проблему.

Спасибо.

Обновление:

HTML:

  <fieldset id="user_info_module">
<label>username:</label>
<label class="editable" id="user_info_username">
<label>Email:</label>
<label id="user_info_email"> </label>
<label>Default page:</label>
<label id="user_info_defaultpage"></label>
<label>mobile:</label><label id="user_info_mobile"></label>
<label>country:</label><label id="user_info_country"></label>
<label>address:</label><label id="user_info_address"></label>
<label>pincode:</label><label id="user_info_pincode"></label>
<label>landline:</label><label id="user_info_landline"></label>
</fieldset>

http://jsfiddle.net/M3J2p/1/

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Первым делом поместите свой код jquery в обработчик $ (document) .ready (function ()); .

и проверьте jsfiddle , этоне показывать мне двойное окно предупреждения.когда вы щелкаете по элементу, this будет ссылаться на этот конкретный элемент, а не на другие.

Обновите HTML-код, о котором идет речь, чтобы подтвердить точную проблему, или создайте пример jsfiddle для вашей проблемы.

Редактировать: Причины ошибок и их решение

Перед тем, как jQuery 1.7, чтобы остановить выполнение других обработчиков после одной привязки с использованием .live (), обработчик должен вернутьложный.Вызов .stopPropagation () этого не сделает.

$("a").live("click", function(event){
  event.preventDefault();
});

Проверьте обновленный jsfiddle согласно вашему коду.вы пропустили закрытие одного тега, и при использовании этого возникла проблема с пузырями событий выше.В обновленном jquery используйте .on() ..

проверьте .live () документацию на jQuery, чтобы узнать об этом лучше.

1 голос
/ 22 декабря 2011

Может быть, у вас есть два элемента с классом «редактируемый» или что вы дважды вызываете код выше.У вас есть это в document.ready?или вызывая его через функцию?

0 голосов
/ 22 декабря 2011

Полагаю, что $ (". Editable") находит более одного элемента. Если вы хотите найти конкретный элемент, рассмотрите возможность использования идентификатора, или вы также можете проверить, является ли целевой объект правильным в обратном вызове.

$(".editable").live("click",function(event)
{
   if (event.target == mytarget)
   {
         // do something
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...