使用jquery查找单击事件的值。每次点击delete
课程时,hidden
变量都会返回第一个hdid
而不是点击的hdid
。当我使用this
时,它返回整个delete
类,但我只需要select类的'hdid'。问题是如何使用this
将变量设置为选定的hdid
<form id="frmDelete" method="post" action="delete-class.php">
<ul id="class">
<li>
<div class="delete">ED 123-123<input type="hidden" name="hdid" id="hdid" value="6"/></div>
</li>
<li>
<div class="delete">EDU 121-101<input type="hidden" name="hdid" id="hdid" value="7"/></div>
</li>
<li>
<div class="delete">STU 120-456<input type="hidden" name="hdid" id="hdid" value="8"/></div>
</li>
</ul>
</form>
</div>
<script>
$(function() {
$(".delete").click(function() {
var hidden = $('#hdid').val();
console.log(hidden);
console.log(this);
});
});
</script>
答案 0 :(得分:3)
$(function() {
$(".delete").click(function() {
var hidden = $(this).find("hidden").val();
console.log(hidden);
});
});
id应该是唯一的
答案 1 :(得分:0)
$(function() {
$(".delete").click(function() {
var $div = $(this);
console.log($div.children("input").prop("name"));
});
});
答案 2 :(得分:0)
您在同一页面上有多个ID为hdid的元素。拥有多个具有相同ID的元素并不是一个好主意。
由于您使用$('#hdid')
搜索元素,因此您始终会获得第一个元素。
答案 3 :(得分:0)
id=""
应该是唯一的,如果您希望多个元素hdid
使用class
属性。这是导致你的问题。所以'修复'html就像
<div class="delete">ABC<input type="text" name="hdid1" class="hdid" />
和js喜欢
$(function() {
$(".delete").click(function() {
var hidden = $(this).children('input.hdid').val();
console.log(hidden);
console.log(this);
});
});
答案 4 :(得分:-1)
您的问题是您有多个具有相同ID的元素。这不是真正允许的,所以当被问到ID为“hdid”的元素的值时,jQuery将只取它找到的第一个的值。
这里的一个可能的解决方案是只有一个隐藏的输入字段,并在单击特定项目时更新其值,然后提交表单。您可以使用data-*
属性存储要删除的项目的ID(假设您使用的是HTML 5):
<form id="frmDelete" method="post" action="delete-class.php">
<input type="hidden" name="hdid" id="hdid" />
<ul id="class">
<li>
<div class="delete" data-id="6">ED 123-123</div>
</li>
<li>
<div class="delete" data-id="7">EDU 121-101</div>
</li>
<li>
<div class="delete" data-id="8">STU 120-456</div>
</li>
</ul>
</form>
<script>
$(function() {
$(".delete").click(function() {
$('#hdid').val($(this).data('id'));
var hidden = $('#hdid').val();
console.log(hidden);
console.log(this);
});
});
</script>