Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2016, 11:10
Новичок на форуме
Отправить личное сообщение для capau Посмотреть профиль Найти все сообщения от capau
 
Регистрация: 22.10.2012
Сообщений: 5

исключение из выборки атрибутов
имею вот такой скрипт для расстановки переносов

$(document).ready(function() {

	$.fn.hyphenate = function() {
		var all = "[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]",
			glas = "[аеёиоуыэю\я]",
			sogl = "[бвгджзклмнпрстфхцчшщ]",
			zn = "[йъь]",
			shy = "\xAD",
			re = [];

		re[1] = new RegExp("("+zn+")("+all+all+")","ig");
		re[2] = new RegExp("("+glas+")("+glas+all+")","ig");
		re[3] = new RegExp("("+glas+sogl+")("+sogl+glas+")","ig");
		re[4] = new RegExp("("+sogl+glas+")("+sogl+glas+")","ig");
		re[5] = new RegExp("("+glas+sogl+")("+sogl+sogl+glas+")","ig");
		re[6] = new RegExp("("+glas+sogl+sogl+")("+sogl+sogl+glas+")","ig");
		return this.each(function() {
			var text = $(this).html();
			for (var i = 1; i < 7; ++i) {
				text = text.replace(re[i], "$1"+shy+"$2");
			}
			$(this).html(text);
		});
	};

	$(function(){
		$('p, h1, h2, h3, h4, h5, h6, a').hyphenate();
	});
});

всё бы хорошо, но он вставляет переносы даже в атрибуты картинок которые вложены в тэг <a>
как исключить из выборки атрибуты ссылок/картинок?
Ответить с цитированием
  #2 (permalink)  
Старый 11.07.2016, 21:50
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Тут два пути решения которые мне лично приходят на ум.
  1. Каждый элемент обрабатывать по отдельности.
  2. Или же изменить регулярное выражения.
Ответить с цитированием
  #3 (permalink)  
Старый 11.07.2016, 22:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Расстановка переносов в html тексте на русском языке
capau,
для данного варианта достаточно указать блок который нужно обработать
было
$('p, h1, h2, h3, h4, h5, h6, a').hyphenate();

можно сейчас
$("body").hyphenate();


$.fn.hyphenate = function() {
    var all = "[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]",
        glas = "[аеёиоуыэю\я]",
        sogl = "[бвгджзклмнпрстфхцчшщ]",
        zn = "[йъь]",
        shy = "\xAD",
        re = [
    new RegExp("(" + zn + ")(" + all + all + ")", "ig"),
    new RegExp("(" + glas + ")(" + glas + all + ")", "ig"),
    new RegExp("(" + glas + sogl + ")(" + sogl + glas + ")", "ig"),
    new RegExp("(" + sogl + glas + ")(" + sogl + glas + ")", "ig"),
    new RegExp("(" + glas + sogl + ")(" + sogl + sogl + glas + ")", "ig"),
    new RegExp("(" + glas + sogl + sogl + ")(" + sogl + sogl + glas + ")", "ig")
    ];
    return this.each(function() {
        $(this).contents().filter(function() {
            this.nodeType == 1 && $(this).hyphenate();
            return this.nodeType == 3;
        }).each(function(i, el) {
            re.forEach(function(reg) {
                el.data = el.data.replace(reg, "$1" + shy + "$2");
            })
        });
    });
};

Последний раз редактировалось рони, 12.07.2016 в 00:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить данные всех атрибутов указанных элементов в массив Jigan2 jQuery 6 21.03.2015 16:39
Некому ловить исключение или я чего-то непонимаю? Vjacheslav Общие вопросы Javascript 2 20.12.2014 22:55
Почему jQuery не обрабатывает элементы со значением атрибутов "nodeType" ercling jQuery 1 08.01.2014 22:10
Функция для выборки html элементов potato Ваши сайты и скрипты 6 01.08.2012 01:55
Поиск и чтение атрибутов в XML Armen Общие вопросы Javascript 4 12.03.2011 22:20