Вставьте HTML, используя jquery .html () - PullRequest
9 голосов
/ 13 августа 2010

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

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

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

Ответы [ 7 ]

9 голосов
/ 13 августа 2010

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

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

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

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

Кроме того ...

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


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

7 голосов
/ 18 августа 2010

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>
2 голосов
/ 13 августа 2010

То, что я хотел бы сделать, это поместить весь этот HTML в div согласно: <div id="myHTML" style="display: none;">LOTS OF HTML HERE</div>, а затем, когда сделаете это:

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

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

1 голос
/ 14 августа 2010

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

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

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

1 голос
/ 13 августа 2010

Если кавычки нарушают ваш код, попробуйте это ...

$("td#content").html("<a href=\"http://www.example.com\">my link</a>");

Цитаты не экранируются. Просто добавьте обратную косую черту перед кавычками, двойными или одинарными в вашем HTML-коде Это должно сделать это. ;)

1 голос
/ 13 августа 2010

Стефан прав, но чтобы ответить на ваш вопрос с кавычками, не забывайте избегать ничего, что могло бы его сломать, поэтому, если у вас есть html("<a href='#' onclick='dofunction("text")'>...etc...");, это должно быть html("<a href='#' onclick='dofunction(\"text\")'>...etc...");, чтобы двойные кавычки нечитать буквально.

0 голосов
/ 13 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...