#javascript #jquery #each
#javascript #jquery #каждый
Вопрос:
Я только начинаю изучать js и нуждаюсь в вашей помощи.
У меня есть следующий код:
<html>
<head>
<title>test</title>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('.test1').(function(){
this.each(function () {
var a = $(this);
alert(a);
});
});
});
</script>
</head>
<body>
<pre class="test1">
blabla1
blabla2
blabla3
</pre>
</body>
</html>
С помощью этого кода я хотел выяснить, как «каждый» будет разделять содержимое предварительного тега. Firebug возвращает следующее сообщение об ошибке:
XML-фильтр применяется к значению, отличному от XML
Ошибка вызвана этой командой:
$('.test1').(function(){...
Что я делаю не так?
Заранее большое спасибо!
Ответ №1:
Если вы действительно хотите увидеть, как .each
работает в вашем примере, измените код на:
$(function () {
$('.test1').each(function(){
var a = $(this);
alert(a.html());
});
});
Однако, как ранее сказал @James_Johnson, код в .each
функции будет выполняться только один раз, поэтому вы, вероятно, увидите
blabla1
blabla2
blabla3
в вашем предупреждающем сообщении
Чтобы выполнить .each
итерацию, вы должны выполнить что-то вроде
<html>
<head>
<title>test</title>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('.test1 p').each(function(){
var a = $(this);
alert(a.html());
});
});
</script>
</head>
<body>
<pre class="test1">
<p>blabla1</p>
<p>blabla2</p>
<p>blabla3</p>
</pre>
</body>
</html>
Ответ №2:
Единственное, что находится внутри <pre>
тега, — это текст, поэтому each()
в этом случае нет необходимости. Попробуйте вместо этого что-то вроде этого:
<script type="text/javascript">
$(function (){
alert($(".test1").text());
});
</script>
Ответ №3:
Если вы действительно хотите, чтобы текст был разбит на части, вы можете попробовать это.
$.each( $('.test1').text().split('n'), function(index,value){
alert( value );
});