我在页面上有许多表格,例如:

<form>
    <input type="hidden" name="id" value="someID1">
    <div>
        <span>
            <input type="submit" class="submitClass">
        </span>
    </div>

    <div>
        <input type="text" name="name" class="someClass" value="name1">
    </div>
</form>

<form>
    <input type="hidden" name="id" value="someID1">
    <div>
        <span>
            <input type="submit" class="submitClass">
        </span>
    </div>

    <div>
        <input type="text" name="name" class="someClass" value="name1">
    </div>
</form>


然后我有一些JS:

jQuery(document).ready(
    function()
    {
        console.log("page loaded");

        jQuery(".submitClass").on("click", function() {
            var id = jQuery(this).siblings("input[name='id']").val();
            var name = jQuery(this).siblings("input[name='name']").val();

            console.log(id);
            console.log(name);

            return false;
        });
    }
);


JSFIDDLE:http://jsfiddle.net/sEXg3/

单击提交按钮后,我想停止提交表单,并获取提交按钮旁边的两个输入的值。

我尝试使用.siblings()函数执行此操作,但是由于输入位于不同的DIV / SPAN中,因此它不起作用(如果我将它们彼此紧邻放置,则可以正常工作)。

我该怎么做?

最佳答案

您要查找的元素不是“提交”按钮的同级对象。

在您的情况下,我建议找到form元素(您可以使用.closest()找到其中存在单击按钮的form元素),然后使用.find()在其中找到所需的输入字段。

jQuery(function ($) {
    console.log("page loaded");

    $(".submitClass").on("click", function () {
        var $this = $(this),
            $form = $this.closest('form');
        var id = $form.find("input[name='id']").val();
        var name = $form.find("input[name='name']").val();

        console.log(id);
        console.log(name);

        return false;
    });
});


演示:Fiddle

07-24 09:20