0

使用 jquery 找出单击事件的值。每次delete单击该类时,该hidden变量都会返回第一个hdid而不是 clicked hdid。当我使用this它时,它会返回整个delete类,但我只需要选择类的“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>
4

5 回答 5

3
$(function() {
        $(".delete").click(function() {
            var hidden = $(this).find("hidden").val();
            console.log(hidden);
        });
    });

并且 id 应该是唯一的

于 2012-08-22T14:50:25.040 回答
0
$(function() {
    $(".delete").click(function() {
        var $div = $(this);
        console.log($div.children("input").prop("name"));
    });
});
于 2012-08-22T14:50:59.537 回答
0

您在同一页面上有多个 ID 为 hdid 的元素。拥有多个具有相同 ID 的元素并不是一个好主意。

由于您$('#hdid')用于搜索元素,因此您始终会获得第一个。

于 2012-08-22T14:51:18.517 回答
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);             
    });         
}); 
于 2012-08-22T14:54:34.163 回答
-1

您的问题是您有多个具有相同 ID 的元素。这实际上是不允许的,因此当询问 ID 为“hdid”的元素的值时,jQuery 将只取它找到的第一个元素的值。

这里一种可能的解决方案是只有一个隐藏的输入字段,并在单击特定项目时更新其值,然后提交表单。您可以使用属性存储要删除的项目的 ID data-*(假设您使用的是 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>
于 2012-08-22T14:55:27.350 回答