尝试通过jquery选择器从最接近LI标签的隐藏字段中提取值

时间:2014-07-23 13:03:14

标签: jquery

我想在用户点击hdnServiceCode按钮时捕获存储在隐藏字段btnShipNow中的值。所以在这里我粘贴一个示例html。我希望当用户点击btnShipNow按钮,然后我想从hdnServiceCode隐藏字段中提取最接近btnShipNow按钮的值。

这是我的HTML

<div id="rec">
<ul>
    <li>
    <input type="hidden" value="65" id="hdnServiceCode">
    UPS Express Saver</li>
</ul>
<ul>
    <li>24.47&nbsp;GBP</li>
    <li class="nobutton"><span id="rptPrice_ctl01_btnShipNow">Ship Now</span>
    </li>
</ul>
</div>
<div id="rec">
<ul>
    <li>
    <input type="hidden" value="15" id="hdnServiceCode">
    UPS Express Saver</li>
</ul>
<ul>
    <li>11.47&nbsp;GBP</li>
    <li class="nobutton"><span id="rptPrice_ctl01_btnShipNow">Ship Now</span>
    </li>
</ul>
</div>

这是我的jquery代码

$('.nobutton').live("click", function () {
        alert($(this).closest('ul').closest('div#rec').closest("hdnServiceCode").val());
    });

但上面的代码不起作用。在哪里我犯了错误。请帮我从隐藏字段中捕获最接近btnShipNow按钮的值。感谢

3 个答案:

答案 0 :(得分:1)

尝试,

 alert($(this).closest('#rec').find("#hdnServiceCode").val());

你的选择器中可能有很多错误,比如

  • 滥用ID选择器
  • 不必要地使用最接近的多次

但主要是你应该真正使用DOM中的元素的唯一ID。对于当前具有标识hdnServiceCode且使用

的元素,请使用类
 alert($(this).closest('#rec').find(".hdnServiceCode").val());

答案 1 :(得分:0)

这是一个小提琴:http://jsfiddle.net/boatrokr/jB5a5/

我清理了匹配ID的问题并使用了这个:

$('.nobutton').click(function(){
    alert($(this).prev().text());
});

答案 2 :(得分:0)

因为id应该是唯一的。所以修改你的codee并在你的字段中添加 hdn

<div id="rec">
<ul>
    <li>
        <input type="hidden" value="65" id="hdnServiceCode1" class="hdn"/>
    UPS Express Saver</li>
</ul>
<ul>
    <li>24.47&nbsp;GBP</li>
    <li class="nobutton"><span id="rptPrice_ctl01_btnShipNow">Ship Now</span>
    </li>
</ul>
</div>
<div id="rec">
<ul>
    <li>
        <input type="hidden" value="15" id="hdnServiceCode2" class="hdn"/>
    UPS Express Saver</li>
</ul>
<ul>
    <li>11.47&nbsp;GBP</li>
    <li class="nobutton"><span id="rptPrice_ctl01_btnShipNow">Ship Now</span>
    </li>
</ul>

你的jquery

$('.nobutton').on('click', function () {
        alert($(this).closest('#rec').find(".hdn").val());
    alert($(this).closest('#rec').find("ul:eq(0)  li").text());
    });

DEMO