0

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>
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は最初に見つかった要素の値を取得します。

ここで考えられる解決策の1つは、非表示の入力フィールドを1つだけにして、特定のアイテムがクリックされたときにこの値を更新してから、フォームを送信することです。属性を使用して、削除するアイテムの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 に答える