PDA

Просмотр полной версии : [Вопрос] jquery, obj.html() или obj.innerHTML


Naydav
22.04.2008, 18:41
Вот заметил такое вот свойство у jquery


Пример надуманный, но хорошо демонстрирует проблему:

Вообщем много обычного HTML кода
$new =<<<CONTENT

<div id="content" style="float:left; width:100%;">

<h1>Members: </h1>
<table class="TableMain" cellpadding="0" cellspacing="0"/>
<thead>
<tr align="center">
<th width="125" id="header">id</td>
<th width="300" id="header">EMAIL</td>
<th width="*" id="header">&nbsp;</td>
<th width="55" id="header">EDIT</td>

<th width="55" id="header">DELETE</td>
</tr>
</thead> <tr align="center">
<td><a href="/inside/member/edit/39/">39</a></td>
<td><a href="/inside/member/edit/39/">ntest@test.new</a></td>
<td><a href="/inside/gallery/39/" style="text-decoration:underline;">Edit gallery</a></td>
<td><a href="/inside/member/edit/39/"><img src="/_admin/templates/images/b_edit.png" border="0" width="16" height="16"></a></td>
<td><a href="javascript: onDelete(39);"><img src="/_admin/templates/images/b_drop.png" border="0" width="16" height="16"></a></td>

</tr> <tr align="center">
<td><a href="/inside/member/edit/47/">47</a></td>
<td><a href="/inside/member/edit/47/">test@test.ua</a></td>
<td><a href="/inside/gallery/47/" style="text-decoration:underline;">Edit gallery</a></td>
<td><a href="/inside/member/edit/47/"><img src="/_admin/templates/images/b_edit.png" border="0" width="16" height="16"></a></td>
<td><a href="javascript: onDelete(47);"><img src="/_admin/templates/images/b_drop.png" border="0" width="16" height="16"></a></td>
</tr> <tr align="center">

<td><a href="/inside/member/edit/48/">48</a></td>
<td><a href="/inside/member/edit/48/">test@test.test</a></td>
<td><a href="/inside/gallery/48/" style="text-decoration:underline;">Edit gallery</a></td>
<td><a href="/inside/member/edit/48/"><img src="/_admin/templates/images/b_edit.png" border="0" width="16" height="16"></a></td>
<td><a href="javascript: onDelete(48);"><img src="/_admin/templates/images/b_drop.png" border="0" width="16" height="16"></a></td>
</tr> <tr align="center">
<td><a href="/inside/member/edit/55/">55</a></td>
<td><a href="/inside/member/edit/55/">vff@effe.efe</a></td>

<td><a href="/inside/gallery/55/" style="text-decoration:underline;">Edit gallery</a></td>
<td><a href="/inside/member/edit/55/"><img src="/_admin/templates/images/b_edit.png" border="0" width="16" height="16"></a></td>
<td><a href="javascript: onDelete(55);"><img src="/_admin/templates/images/b_drop.png" border="0" width="16" height="16"></a></td>
</tr> <!--<tfoot>
<tr>
<td colspan="5"><input type=button value="Add member" class=inpButton onclick="window.location = '/inside/member/add/';"></td>
</tr>
</tfoot>-->
</table><input type=button value="Add member" class=inpButton onclick="window.location = '/inside/member/add/';">
</div>
CONTENT;

// Убираем переносы
$new = ereg_replace("\r\n", "", $new);
// Экранируем двойные кавычки
$new = ereg_replace("\"", "\\\"", $new);



Убираем переносы и Экранируем двойные кавычки
Это для того, что бы, код был в одну строку, иначе не сработает obj.innerHTML = [только строка, без переходов на новую]



Идем дальше:
<body>
<div id="content"></div>
<script>
// $("#content").html("<?=$new?>"); НЕ РАБОТАЕТ
var obj = document.getElementById("content");
obj.innerHTML = "<?=$new?>"; // РАБОТАЕТ!!!
</script>
</body>

Вопрос:
Какие еще теги нужно заменять, что сработал и вариант с jquery, (пробывал - "\n", "\t", "'")
Если вообще заработает

ps возможно это символ - "@"

astrologer
22.04.2008, 19:48
Нужно смотреть на код, который получается в итоге, т.е. после того, как отработает php и получится страница.
P.S. может, не работает потому, что закомментировано? %)

Isis
22.04.2008, 20:41
.append ?

Naydav
22.04.2008, 21:04
.append - Не сработает, так же как и

var content = "test
test";
obj.innerHTML = content;

так как $new (var content ) - содержит недопустимые символы, такие как перенос строки и @, нужно добавить $new = ereg_replace("@", "at", $new);

придеться на это обращать внимание...

ps для аякса использую библиотеку xajax, интересно какое мнение относительно нее у античатовцев

astrologer
22.04.2008, 21:29
Это:var content = "test
test";не работает по правилам JS, библиотека тут не при чём.
Читаем спецификацию ecma-262:
7.3 Line Terminators
Like white space characters, line terminator characters are used to improve source text readability and to
separate tokens (indivisible lexical units) from each other. However, unlike white space characters, line
terminators have some influence over the behaviour of the syntactic grammar. In general, line terminators
may occur between any two tokens, but there are a few places where they are forbidden by the syntactic
grammar. A line terminator cannot occur within any token, not even a string. Line terminators also affect
the process of automatic semicolon insertion (7.8.5).
The following characters are considered to be line terminators:

Code Point Value Name Formal Name
\u000A Line Feed <LF>
\u000D Carriage Return <CR>
\u2028 Line separator <LS>
\u2029 Paragraph separator <PS>

Naydav
23.04.2008, 13:19
astrologer
Я о том, что jquery не пропускает еще и "@"