2010-08-19 6 views
4

Просто начинайте с jQuery, и эта проблема кажется невозможной для меня. Поиск по всем форумам, без везения. Может быть, вы, ребята, можете мне помочь?jQuery - Изменение содержимого страницы в форме

Мой HTML выглядит вроде как это:

<form> 
    <table class="tableClassName"> 
    [content] 
    </table> 
    <div class="divClassName"> 
    [content] 
    </div> 
Here is some text 
    <div class="divClassName"> 
    [content] 
    </div> 
</form> 

Форма имеет Buch дочерних элементов. Я только хочу, чтобы текст «здесь я сом текст», что-то еще. Есть ли способ оставить все дочерние элементы и изменить только этот текст?

Вот мой нуб код, до сих пор:

$(document).ready(function() { 
var oldText = "Here is some text"; 
var newText = "the new text"; 
var entireElement = $("form:contains(" + oldText + "):not(table, div)").html(); 
$("form:contains(" + oldText + "):not(table, div)").html(entireElement+newText); 
}); 

Как вы можете видеть, это не заменяет ничего. Он только ставит мой новый текст перед моим </form>. Что делать?

ответ

0

Если вы не знаете, где ваш текстовый узел находится в контейнере, вы можете сделать что-то подобное, то есть цикл по всем из них, пока вы не получите матч:

​$("form").contents().each(function() { 
    if(this.nodeType == 3) { 
     if($.trim(this.nodeValue) == 'Here is some text') { 
      this.nodeValue = 'New text'; 
     } 
    } 
});​​​​​ 

Демо: http://jsfiddle.net/8yAbu/

+0

Возможно, это может помочь мне в решении некоторых других проблем. Thanx alot! – sweden

0

Сделайте вещи проще для себя. Используйте ID!;)

Новый HTML код

<form> 
    <table class="tableClassName">[content]</table> 
    <div class="divClassName">[content]</div> 
    <span id="form_text">Here is some text</span> 
</form> 

Новый Javascript код

$(document).ready(function() { 
    var newText = "the new text"; 
    $('#form_text').html(newText); 
}); 
+0

Да. Это корень моей проблемы. Я не могу использовать идентификаторы. Его CMS-сервис и я не могу редактировать html. – sweden

+0

@sweden затем перейдите с ответом karim79. И дайте ему кредит на это, приняв ответ (нажмите V рядом с его ответом). – Frankie

0

Дайте этому выстрел:

$(document).ready(function() { 

    var oldText = "Here is some text"; 
    var newText = "the new text"; 
    var newHtml = $("form:contains(" + oldText + "):not(table, div)").html().replace(oldText,newText); 
    $("form:contains(" + oldText + "):not(table, div)").html(newHtml); 

}); 

P.S. Это определенно не самый оптимизированный способ его достижения.

+0

OMG! Это сработало! Вы не можете поверить, насколько я ценю это! – sweden

+0

@sweden - Если в содержимом '

' есть какие-либо обработчики событий, управляемые jQuery или другие данные, просто имейте в виду, что это удалит всю ссылку на эти данные. Если это не так, то это должно работать нормально. – user113716

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