错误无法从隐藏的输入类型中获取其他值

时间:2011-11-18 13:53:50

标签: jquery

我正在使用

index.php:

<script src="srcipt.js"></script>
    <div id="demo">
        <h3><input type="hidden" name="id" value='1' />test1</h3>
        <h3><input type="hidden" name="id" value='2' />test2</h3>
        <h3><input type="hidden" name="id" value='3' />test3</h3>
        <h3><input type="hidden" name="id" value='4' />test4</h3>
        <h3><input type="hidden" name="id" value='5' />test5</h3>
    </div>
在script.js中

$(document).ready(function(){
    $('#demo h3').click(function(){
       var id = $(this).parent().find('input[type="hidden"][name="id"]').val();
       alert(id);
    });
});

当我点击“test1”结果1时 ,点击“test2”结果1 ... ,点击“test5”结果1

  

点击“test2”时如何获得价值是结果2,如何解决?

7 个答案:

答案 0 :(得分:1)

$(document).ready(function(){
    $('#demo h3').click(function(){
       var id = $(this).children('input').eq(0).val();
       alert(id);
    });
});

这应该有用!

$(this)指的是你的h3元素。你为什么要先去父母那里寻找输入?您可以获取所选h3元素的第一个输入元素!

此外,请注意,在大多数情况下,将多个input元素设为相同name是不好的做法。

答案 1 :(得分:0)

您的代码中不需要调用parent()。试试这个:

var id = $(this).find('input[type="hidden"][name="id"]').val();

考虑到HTML的结构,您可以通过以下方式提高性能:

var id = $(this).find('input').val();

我不得不说,HTML似乎很奇怪,为什么要将input元素放入H3?为什么要在每个name中重复具有相同H3属性的输入?

我认为使用data()可以更好地实现您在此处所做的工作。 Further information here

答案 2 :(得分:0)

调用.parent()是不必要的,因为$(this)引用h3。请使用以下代码:

$(document).ready(function(){
    $('#demo h3').click(function(){
       var id = $(this).find('input[type="hidden"][name="id"]').val()
       alert(id);
    });
});

这是a working fiddle

其他信息:

有很多方法可以给这只猫上皮。例如,如果隐藏元素始终是h3中的第一个元素,您可以像这样抓住第一个子元素:

$(document).ready(function(){
    $('#demo h3').click(function(){
       var id = $(this).children().eq(0).val()
       alert(id);
    });
});

答案 3 :(得分:0)

您无需致电parent(),只需使用此功能:

$(document).ready(function(){
    $('#demo h3').click(function(){
       var id = $(this).find('input[type="hidden"][name="id"]').val();
       alert(id);
    });
});

live

中查看此内容

答案 4 :(得分:0)

由于您在parent()之前呼叫find(),因此您将匹配{em>所有 <h3>#demo元素中的隐藏输入。由于您只想匹配点击的<h3>元素下方的隐藏输入,因此您必须移除对parent()的调用:

$(document).ready(function() {
    $("#demo h3").click(function() {
       var id = $(this).find("input:hidden[name=id]").val();
       alert(id);
    });
});

答案 5 :(得分:0)

$('#demo h3').click(function(){
       var id = $(this).children("input[type='hidden']").val();
       alert(id);
    });

Demo

答案 6 :(得分:0)

有几种不同的方法可以做到这一点。基本问题是您的代码只能找到选择器的第一个匹配值。

var id = $(this).parent().find('input[type="hidden"][name="id"]').val();

我认为取出.parent()会有所帮助。 $(this)指的是被点击的H3,所以你不需要去父母那里找到包含的INPUT标签。

var id = $(this).find('input[type="hidden"][name="id"]').val();

您还可以为每个输入提供ID属性并按其搜索。

<input type="hidden" name="id" value="1" id="input1" />

然后按输入搜索

var id = $(this).parent().find('input#input1').val();

如果您需要从网页上的其他区域查找输入值,我建议您这样做。