Ну дак в чем собственно вопрос, стоит ли делать подобные жертвы ради производительности?
Сколько в среднем у вас выделяется памяти на сценарий и сколько времени это занимает?
Ну дак в чем собственно вопрос, стоит ли делать подобные жертвы ради производительности?
\((?<name>[^)]+)\)\((?<type>\d+)\)\((?<percent>[^)]+)\)(?:\((?<who>[^)]+)\))?
<h2>Запись #1</h2>
<div class="share42init"
data-url="http://ссылка на запись"
data-title="Заголовок записи"
data-description="Описание записи">
</div>
<h2>Запись #2</h2>
<div class="share42init"
data-url="http://ссылка на запись 2"
data-title="Заголовок записи 2">
</div>
<h2>Запись #3</h2>
<div class="share42init"
data-url="http://ссылка на запись 3"
data-title="Заголовок записи 3">
</div>
<script type="text/javascript" src="http://site.name/share42/share42.js"></script>
<br>
, который ставится на месте предполагаемого переноса на новую строку. Расставить эти теги поможет PHP-функция nl2br(), которая дополнит переход на новую строку тегом <br>
.<textarea id="text"></textarea>
<button id="go">Кнопка</button>
function replaceSelectedText(elem, str){
elem.focus();
if (document.selection){
var s = document.selection.createRange();
if (s.text){
eval("s.text="+str+"(s.text);");
s.select();
return true;
}
}
else if (typeof(elem.selectionStart) == "number"){
if (elem.selectionStart!=elem.selectionEnd){
var start = elem.selectionStart;
var end = elem.selectionEnd;
eval("var rs = "+str+"(elem.value.substr(start,end-start));");
elem.value = elem.value.substr(0,start)+rs+elem.value.substr(end);
elem.setSelectionRange(end,end);
}
return true;
}
return false;
}
//оборачиваем текст в нужные теги и т.д.
function change_str(s){return "<b>"+s+"</b>"}
// по клику на кнопку, выделенный текст будет заменен на текст с тегами
document.getElementById('go').onclick = function() {
replaceSelectedText(document.getElementById('text'), 'change_str');
}
textAreaText.replace(выделенный текст, новый текст)
elem.addEvenetListener('event', function(){doSomething();});
elem.removeAddEventListener('event', function(){doSomething();});
elem.addEvenetListener('event', doSomething);
elem.removeAddEventListener('event', doSomething);
document.addEventListener('click', function(e) {
if (e.target.classList.contains('class')) {
deletComment(e.target);
}
}, false);
stopPropagation не помогЯ бы удивился, если бы помог, т.к. document в иерархии всплытия события, будет стоять последним в очереди. Я в принципе вам предлагал использовать делегирование, т.е. один обработчик клика на весь документ. В вашем случае, проблему можно решить, установив обработчик на ближайший родительский статичный элемент, а не на весь документ. И, если присутствуют еще какие-то родительские элементы, на которых так же установлен клик, то делать проверку внутри их обработчика. Вариант 1, Вариант 2.
<div class="wrapper" data-method="setBgColor">
wrapper
<div class="parent" data-method="alertHello">
parent
<div class="child" data-method="changeBorder">
child
</div>
</div>
</div>
document.addEventListener('click', function(e) {
var el = e.target;
if (methods.hasOwnProperty(el.dataset.method)) {
methods[el.dataset.method].call(el);
}
}, false);
var methods = {
setBgColor: function() {
this.style.backgroundColor = '#ff0';
},
alertHello: function() {
alert('Hello, world!');
},
changeBorder: function() {
this.style.border = '3px dashed #900';
}
};