用jquery获取动态按钮值?

时间:2018-01-04 19:32:45

标签: jquery asp.net-mvc

在asp.net mvc视图页面中编写这个用于创建动态按钮的剃刀代码:

  @foreach(var item in ViewBag.MenuLists)
        {
<button id="buttons" value=@item.RecordId >اضافه کردن به سبد خرید</button>

        }


并且想要当按钮fire显示用户的值时,编写此java脚本代码:

$(document).ready(function () {
            $("#buttons").click(function () {
                var fired_button = $("#buttons").val();
                alert(fired_button);
            });
        });


第一个动态按钮显示值,但当火两个或更高的按钮不显示警报时,会发生什么?如何解决该问题?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在按钮中添加类,您可以通过类访问每个按钮的click事件,如下面的代码

&#13;
&#13;
$(".btn").click(function()
{
alert("you clicked :"+ $(this).val()); 
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn" value="1">1 </button>
<button class="btn" value="2">2 </button>
<button class="btn" value="3"> 3</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您正在通过button处理id。这很好但是新的动态按钮没有我假设的相同ID,或者不应该。如果他们这样做,你可能只对他们中的第一个产生影响[行为不能保证]。

另一种可能性是,由于您的按钮被动态加载到DOM,因此在加载文档并调用.ready()函数时它们可能不存在。您可能需要为每个按钮添加一个新的脚本,同时将其放在页面上,或者为每个按钮的id开发一些迭代命名技术,以便可以独立地进行寻址。

一般id对于项目应该是唯一的,而classes对于类似的项目应该是唯一的。这是一个指导原则,而不是规则,但有一些实际原因,例如getElementByID()getElementsByClass()相比。

我认为在您的情况下,在初始化[DOM]运行后,.click()上会出现新按钮。