2009-11-13 11 views

Respuesta

21

El objeto de matriz no tiene ningún método each. A medida que se recorre cadenas y no elementos, utilice el método jQuery.each (en lugar del jQuery() cada método.):

var lines = $('textarea[name=sometextarea]').val().split('\n'); 
$.each(lines, function(){ 
    alert(this); 
}); 
+0

esto devuelve [objeto Objeto] y no la cadena. intenté this.text(), y dice que no hay error de método. – aoghq

+0

dice que this.text() no es una función. – aoghq

+1

@aoghq: jQuery arroja el valor a Object por algún motivo. Puede usar String (this) para obtener el valor devuelto a la cadena. – Guffa

3

Creo que su problema es con el objeto jquery. val() devuelve una cadena y split() devolverá una matriz. Pero cada() es una propiedad del objeto JQuery. Pruebe esto en su lugar:

$($('textarea[name=sometextarea]').val().split('\n')).each(function(e){ 
alert($(this));         
}); 

observe los $ adicionales (...) alrededor del retorno de la división().

+3

El método $(). Each() está destinado a iterar sobre los elementos, se recomienda el método $ .each() para iterar sobre otros objetos, como una matriz de cadenas. – Guffa

0

Así ...

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){ 
alert(this);         
}); 
1

jQuery proporciona un método de each el objeto jQuery (o $). Esto se debe utilizar, en lugar de crear un objeto jQuery de una matriz:

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){ 
    alert(this); 
}); 
0

Si tengo un área de texto que tiene cierta anchura, y el texto escrito, donde el texto va automáticamente a la nueva línea debido a la final del área de texto , ¿esa cuerda se puede dividir en una nueva cuerda por línea?

-1

He resuelto esto con codeigniter y php. Aquí es un código:

$this->load->helper('text'); 
$name = 'some text that is longer than the width of text area and you need to do some thing with it...'; 
$name_array = word_wrap($name, 20); //20 is a number of character where your text will be wrapped. 
foreach(preg_split("/((\r?\n)|(\r\n?))/", $name_array) as $line){ 
     echo $line.'</br>'; 
    //from here, you can do what ever you want with $line, put it to another array..whatever 
} 
1
$("#your-text-area").live("keypress",function(){ 
      var lines = $(this).val().split("\n"); 
      $.each(lines, function(n, elem) { 
        console.log(elem); 
      $("<li></li>").text(elem).appendTo($("#target")); 
}); 

Puede "escuchar" el uso directo por pulsación de tecla, como los otros sugirieron dividir por salto de línea y el truco en el bucle es que con "cada uno" que se logra un índice y valor (elem en el código). Este fragmento agrega el valor de línea a otro elemento de destino que puede vaciar antes de realizar un bucle usando $ ("# target"). Empty();

Cuestiones relacionadas