У меня есть a DIV
с некоторыми символами. Как я могу удалить последний знак из текста с каждым, нажимают DIV
самостоятельно?
$("div").on("click", function(){
$(this).text(function(index, text){
return text.replace(/^.(\s+)?/, '');
});
});
$("div").on("click", function(){
$(this).text(function(index, text){
return text.replace(/(\s+)?.$/, '');
});
});
$("div").on("click", function(){
$(this).text(function(index, text){
return text.replace(/r/gi, '');
});
});
См. пример каждого из них в сети: http://jsfiddle.net/Xcn6s/
Если предположить, что у вас есть ссылка на div и он содержит только один текстовый узел (как предполагает ваш вопрос), то это очень просто. Вот решение не jQuery:
div.onclick = function() {
var textNode = this.firstChild;
textNode.data = textNode.data.slice(0, -1);
};
Альтернатива ответу Джонатана, как удалить первый символ:
$("div.myDiv").click(function(){
$(this).html($(this).text().substring(1));
});
Или удалить последний символ:
$("div.myDiv").click(function(){
$(this).html($(this).text().replace(/.$/g, ''));
});
Или сойти с ума и удалить символ из случайного места:
$("div.myDiv").click(function(){
var text = $(this).text();
var index = Math.round(Math.random() * (text.length - 1));
var result = text.substring(0, index) + text.substring(index + 1, text.length - 1);
$(this).html(result);
});
Вместо случайного места можно использовать приведенную выше функцию с предопределенным индексом для удаления из определенного места:
.Это удаляет символ каждый раз, когда вы нажимаете на div. Без дополнительных требований, я не могу дать вам больше.
<html>
<head>
<script>
function deleteChar(div) {
div.innerHTML = div.innerHTML.replace(/.$/, '');
}
</script>
</head>
<body>
<div onclick="deleteChar(this)">this is my div</div>
</body>
</html>
Ой, простите, вы просили спросить... Ну, вот как вы это делаете на прямом javascript.
Если вы хотите удалить первый символ текста, каждый клик можно использовать подстроку, например:
$("#textDiv").click(function(){
$(this).html($(this).text().substring(1));
});
Для подстроки ответа Джонатона используйте...
$("div.myDiv").click(function(){
$(this).html( $(this).text().replace("/.$/gi", "o") );
});
Для удаления последнего символа
.Это просто с помощью селектора CSS3 атрибута$=, что означает "заканчивается" в выборе jQuery:
Удалить 1-й символ:
$("div[id$=/]").each(function(){
this.id = this.id.substr(1);
});
Удалить последний символ:
$("div[id$=/]").each(function(){
this.id = this.id.substr(0,this.id.length - 1);
});
Правка: вот самый простой способ сделать это без библиотечных зависимостей
function removeLastChar(node) {
var i = node.childNodes.length;
while (--i >= 0) {
if (3 === node.childNodes[i].nodeType) {
node.childNodes[i].data = node.childNodes[i].data.replace(/\S\s*$/, '');
break;
}
}
}
/\S\s*$/
still означает "последнее непространство в конце"
Примечание: заимствовано из решения Тима Дауна и дальнейшего многолетнего опыта веб-разработки, :)
Простой JavaScript:
<div id="text">This is some text</div>
<script>
var node = text.firstChild;
var nodeValue = "";
var nodeValueLength = 0;
text.onclick = function () {
nodeValue = node.nodeValue;
node.nodeValue = nodeValue.substring(0, nodeValue.length - 1);
};
</script>