我有两个div,A和B.它们都有数值1.现在我有一个'添加'按钮。我想一次选择一个div并通过单击Add来增加其中的值。这该怎么做?
<div id="A">1</div>
<div id="B">1</div>
<input type='button' value="ADD" id="add">
脚本
$("#add").on('click', function(){
$(??).text($(??).text() + 1);
});
如何将ADD按钮链接到我单击的div,并在单击ADD时保持选择。
答案 0 :(得分:2)
类似的东西:
var $divs = $('div');
var $addButton = $("#add");
// On click on a div remove calss from eventually previous clicked div and add class to current clicked div
$divs.on('click', function () {
var $divClicked = $(this);
$divs.removeClass('has-been-clicked')
$divClicked.addClass('has-been-clicked');
});
// On click on button, find previous marked div and play with it. If no div has been clicked yet, nothing happens
$addButton.on('click', function () {
var $lastDivClicked = $divs.filter('.has-been-clicked').first();
if ($lastDivClicked.length > 0) {
var currentValue = parseInt($lastDivClicked.text());
$lastDivClicked.text(++currentValue);
}
});
DEMO:http://jsfiddle.net/kxMmA/7/
修改强>
@ user1545024:哇,您可以查看jQuery文档和手册...
1.没有功能.nearest()
2. ID(在您的情况下为#main
)必须是unqiue
3.添加课程selected
时,您应首先从兄弟姐妹中删除此课程
4.您只需要一个事件处理程序,因为点击.qty
和.name
会将DOM冒泡到#main
。
5.使用.text()
并使用数字计算时,您应使用parseInt()
,否则结果将是附加文字,因此$(".selected").text() + 1
不会给出数字2
,而是字符{{1 }}
请在此处查看更新的小提琴:http://jsfiddle.net/hdn6e/12/
和(在我看来)优化小提琴:http://jsfiddle.net/hdn6e/13/
答案 1 :(得分:1)
在点击div时添加一个类,.selected,然后使用$('.selected')
找到它
答案 2 :(得分:1)
var myDiv;
$("div").on('click', function(){myDiv = $(this)});
$("#add").click(function() {
myDiv.text(parseInt(myDiv.text(),10)+1);
});
答案 3 :(得分:0)
另一种可能性是创建一个包含上次单击的div的变量。
向div添加单击侦听器以更新引用变量,并从“添加”按钮单击处理程序中解决引用变量中的div。
var lastClickedDiv;
$("div").on('click', function()
{
lastClickedDiv = $(this);
});
$("#add").on('click', function(){
var newNumber = parseInt(lastClickedDiv.text()) + 1
lastClickedDiv.text(newNumber);
});