在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);
});
});
第一个动态按钮显示值,但当火两个或更高的按钮不显示警报时,会发生什么?如何解决该问题?谢谢。
答案 0 :(得分:1)
您可以在按钮中添加类,您可以通过类访问每个按钮的click事件,如下面的代码
$(".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;
答案 1 :(得分:0)
您正在通过button
处理id
。这很好但是新的动态按钮没有我假设的相同ID,或者不应该。如果他们这样做,你可能只对他们中的第一个产生影响[行为不能保证]。
另一种可能性是,由于您的按钮被动态加载到DOM
,因此在加载文档并调用.ready()
函数时它们可能不存在。您可能需要为每个按钮添加一个新的脚本,同时将其放在页面上,或者为每个按钮的id
开发一些迭代命名技术,以便可以独立地进行寻址。
一般id
对于项目应该是唯一的,而classes
对于类似的项目应该是唯一的。这是一个指导原则,而不是规则,但有一些实际原因,例如getElementByID()
与getElementsByClass()
相比。
我认为在您的情况下,在初始化[DOM
]运行后,.click()
上会出现新按钮。