1

AとBの2つのdivがあります。どちらも数値1です。「追加」ボタンがあります。一度に1つのdivを選択し、[追加]をクリックしてその値を増やしたいと思います。これを行う方法?

<div id="A">1</div>
<div id="B">1</div>

<input type='button' value="ADD" id="add">

脚本

$("#add").on('click', function(){
   $(??).text($(??).text() + 1);
});

[追加]ボタンをクリックしたdivにリンクし、[追加]をクリックしたときに選択を維持するにはどうすればよいですか。

4

4 に答える 4

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

デモ:http://jsfiddle.net/kxMmA/7/

編集

@ user1545024:うわー、jQueryのドキュメントとマニュアルを確認するかもしれません...
1。関数はありません2.ID .nearest()
(あなたの場合#main)はunqiueでなければなりません。
3.クラスを追加するときselectedは、最初にこのクラスを兄弟から削除する必要があります。
4.クリックするだけでイベントハンドラーが1つ必要に.qtyなり.name、DOMがにバブルアップします#main
5..text()数値を使用して計算する場合はparseInt()、を使用する必要があります。そうしないと、結果にテキストが追加されるため$(".selected").text() + 1、数値ではなく2文字列が表示されます11

ここで更新されたフィドルを参照してください:http://jsfiddle.net/hdn6e/12/
そして(私の目には)ここで最適化されたフィドル:http://jsfiddle.net/hdn6e/13/

于 2013-03-14T13:23:34.243 に答える
1

それをいじる

var myDiv;
$("div").on('click', function(){myDiv = $(this)});

$("#add").click(function() {
    myDiv.text(parseInt(myDiv.text(),10)+1);
});
于 2013-03-14T13:24:44.470 に答える
1

divをクリックしたときにおそらく.selectedクラスを追加し、それを見つけてください$('.selected')

于 2013-03-14T13:20:44.150 に答える
0

もう 1 つの可能性は、最後にクリックした 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 デモ

于 2013-03-14T13:25:02.210 に答える