Разница между innerHTML и .html() из jQuery
Может кто-нибудь сказать, в чем разница между функцией jquery.html() и innerHTML?
<script type="text/javascript">
$(document).ready(function(){
$('#test_link').click(function(){
//$('#div_test_out').html("<div width='250px' height='100px' id='div_test'><script language='javascript'>alert('insider');<\/script>asddsa</div>");
document.getElementById('div_test_out').innerHTML="<div width='250px' height='100px' id='div_test'><script language='javascript'>alert('insider');<\/script>asddsa</div>";
});
});
</script>
<a href="#" id="test_link" >TEST LINK :-)</a><br/><br/>
<div width="100px" height="100px" id="div_test_out"></div>
Когда я использую первый вариант, это jQuery, script внутри запусков и появляется предупреждение, но если я использую второй вариант, который с innerHTML (который я, хотя и тот же, и между ними нет разницы), script не работает; - (
В чем может быть причина?
Ответы
Ответ 1
Метод jQuery.html() является многоцелевой функцией для доступа и управления innerHTML. При использовании в качестве сеттера он возвращает коллекцию jQuery для цепочки. При использовании в качестве геттера он возвращает представление разметки внутренних элементов коллекционных элементов.
Когда вы используете его как сеттер - для написания разметки в элемент - jQuery считывает разметку и извлекает скрипты изнутри. Затем он добавляет их в DOM отдельно таким образом, который вызывает их выполнение..html() неявно вызывает несколько операций (script как один), тогда как запись в innerHTML просто вызывает изменение innerHTML, но очень мало сделано с этим HTML.
Ответ 2
Установка свойства innerHTML
не выполняет сценарии.
jQuery содержит специальный код для выполнения сценариев для вас.
Ответ 3
Я думаю, что это правильный способ:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function(){
$('#test_link').click(function(){
//$('#div_test_out').html("<div width='250px' height='100px' id='div_test'>asddsa</div>");
document.getElementById('div_test_out').innerHTML="<div width='250px' height='100px' id='div_test'>asddsa</div>";
alert('insider');
});
});
</script>
<a href="#" id="test_link" >TEST LINK :-)</a><br/><br/>
<div width="100px" height="100px" id="div_test_out"></div>
Почему вы вставляете java script alert в div?