保持选择div并通过按钮更改其值

时间:2013-03-14 13:19:00

标签: jquery

我有两个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时保持选择。

4 个答案:

答案 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)

fiddle with it

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);
});

jsfiddle demo