столкнулся с проблемой.
Если на странице будет присутствовать не один такой атрибут то он в каждый записывал значение всех строк. Решил сделать через .each(), но повалились другие ошибки, через консоль выяснил, что в this передаётся элемент дом дерева с набором свойств. И в итоге рабочая версия такая: $.fn.separation = function(){ this.each(function(){ var target = this.childNodes[0].nodeValue; this.setAttribute('basicValue', target.match(/\d+/g)); var re = /(?=\B(?:\d{3})+(?!\d))/g; this.innerHTML = target.replace( re, ' ' ); return; }); } |
Sober_exe,
Возможный вариант ... <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <script src="http://code.jquery.com/jquery-latest.js"></script> <title></title> </head> <body> <div class="container" > 1234567890 </div> <div class="container" > 777777777 </div> <script type="text/javascript"> $.fn.separation = function (options) { var o = jQuery.extend({ separator: ' ', //разделитель по умолчанию recovery : false //востановить прежнее значение }, options); return this.each(function (index, self) { var target = $(self).text(); !$(self).data('recovery') && $(self).data('recovery', target); //создаём атрибут специальный куда запишем начальное значение, для того что бы, можно было к нему обратится при необходимости var re = /(?=\B(?:\d{3})+(?!\d+))/g; target = o.recovery ? $(self).data('recovery') : $(self).data('recovery').replace(re, o.separator) ; $(self).html(target); }) } alert($('.container').separation().text());//разделить на 3 alert($('.container').separation({separator:'__'}).text()); //разделить на 3 и-или поменять разделить alert($('.container').separation({'recovery':true}).text());//востановить прежнее значение </script> </body> |
круто!
|
Часовой пояс GMT +3, время: 21:56. |