XML-фильтр применяется к значению, отличному от XML

#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 ); 
});