The Issue:
What you've asked jQuery to do is to append the text value of every object with a class of '.button', since all three buttons have that class, you're getting the text value of each button no matter which you click.
The Solution:
Use the 'this' keyword! In the context of a click listener, the 'this' keyword will refer to the control that fired the event. In other words, the control that was clicked. Now you will only be appending the value of one button with each click.
For Example:
$(".list").on("click", ".button", function () {
var y = $(this).text();
$('#value').append('(' + y + ')');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list">
<div class="item">
<div>Item 1</div>
<button class="button">50</button>
</div>
<div class="item">
<div>Item 2</div>
<button class="button">30</button>
</div>
<div class="item">
<div>Item 3</div>
<button class="button">70</button>
</div>
</div>
<span id="value">Total:</span>
Hope that helps!
** -EDIT- **
To REPLACE the value with each click you'd want to use the .text() method to insert the value into the text property of the control. Since you currently have "Total" in there, you'd also need to insert that programatically, or like I did, move it outside your span element.
$(".list").on("click", ".button", function () {
var y = $(this).text();
// Use .text instead of .append.
$('#value').text('(' + y + ')');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list">
<div class="item">
<div>Item 1</div>
<button class="button">50</button>
</div>
<div class="item">
<div>Item 2</div>
<button class="button">30</button>
</div>
<div class="item">
<div>Item 3</div>
<button class="button">70</button>
</div>
</div>
<div>Total: <span id="value"></span></div>