Вставьте HTML с помощью jQuery .html ()

Я хочу вставить большой блок HTML в существование ранее <td>. Я использую этот метод:

 $("td#content").html(LOTS_OF_HTML_CODE_HERE);

Но это не работает. Я - новичок, существует много кавычек и ' в блоке HTML, который, кажется, повреждает его. Каков корректный метод для того, чтобы сделать это?

9
задан Dominic Rodger 13 August 2010 в 18:45
поделиться

7 ответов

Я бы предложил объединить html в одну строку ... вот так.

htmlStr = "";
htmlStr += "<p>some paragraph";
htmlStr += "<p>another paragaraph</p>";

$("#content").html(htmlStr);

таким образом вы можете увидеть, где ваш html ломается, и это добавляет большую удобочитаемость содержимому, созданному javascript.

Также ...

если в этом TD есть контент, который вы хотели бы сохранить, я бы использовал метод jquery append () .


jquery-документация - ваш лучший друг!

10
ответ дан 4 December 2019 в 09:34
поделиться

Я бы поместил весь этот HTML-код в div согласно следующему правилу:

тогда, когда это сделать:

$("td#content").html($("#myHTML").html());

В чем может быть проблема - это разрывы строк. Если у вас есть строка (заключенная в "" или ''), вы обнаружите, что разрывы строк "сломают" ваш код ... поэтому вам придется поместить весь HTML в одну строку.

2
ответ дан 4 December 2019 в 09:34
поделиться

Стефан прав, но, чтобы ответить на ваш вопрос кавычками, не забывайте избегать всего, что в противном случае могло бы его сломать, поэтому, если у вас есть html (" ... etc ... "); он должен быть html (" ... etc ..."); , чтобы двойные кавычки не читались буквально.

1
ответ дан 4 December 2019 в 09:34
поделиться

Вам, вероятно, следует создавать свои элементы с помощью jquery, а не в виде большой строки. У вас нет уверенности в правильности dom, если вы просто используете большую строку, и ее практически невозможно отладить или изменить.

Это похоже на создание xml вручную. Просто это не лучший способ сделать это.

0
ответ дан 4 December 2019 в 09:34
поделиться

Javascript не имеет хорошей поддержки многострочных строк или синтаксиса HEREDOC, но есть несколько обходных путей.

Добавьте обратную косую черту "\" в конец каждой строки, чтобы механизм сценария знал, что вы продолжаете переход к следующей строке, не закончив:

<script>
var my_html = '\
    <div id="my-div">\
        <span>Name:</span> Your Name\
    </div>\
';
</script>

Используйте хак XML CDATA ( http: //mook.wordpress .com / 2005/10/30 / multi-line-strings-in-javascript / ):

<script>
var my_html = (<r><![CDATA[

    <div id="my-div">
        <span>Name:</span>Your Name
    </div>

]]></r>).toString();
</script>
7
ответ дан 4 December 2019 в 09:34
поделиться

If quotes are breaking your code, try this...

$("td#content").html("my link");

The quotes are not being escaped. Just add a backslash before any quotes, double or single within your HTML code. That should do it. ;)

1
ответ дан 4 December 2019 в 09:34
поделиться

Если он поступает из ссылку, вы, вероятно, захотите сделать это с помощью AJAX:

$("#YOUR_ELEMENT").load("THE_CONTENT_TO_LOAD");

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

1
ответ дан 4 December 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: