从jquery中的li中获取选定的值

时间:2012-08-22 14:47:39

标签: jquery this

使用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>

5 个答案:

答案 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>