如何使用jQuery获取<li>中隐藏字段的值?

时间:2017-03-14 01:48:00

标签: javascript jquery

我将filname放在<li>标签的隐藏输入字段中,我希望使用jQuery获取隐藏输入字段的值,但是下面的代码没有得到正确的结果,它返回未定义的值,如何我可不可以做?谢谢!

的js

function GetHiddle() {

    $(".ActionClass").change(function () {
        var selectValue = $('.ActionClass').val();

        var fileName = GetHiddenFilename(this.parent);
        alert("My "+fileName);

        if (selectValue == "DoDelete") {

        }

        if (selectValue == "DoRename") {

        }
    });

}



function GetHiddenFilename(obj) {
    return $(obj).siblings("input[type='hidden']").val();
}

HTML

<ul class="ul-file">              
                    <li>
                           <input type="hidden" value="/storage/emulated/0/Pictures/A1.PNG" />
                           <select class="ActionClass">
                             <option value="DoAction">Action</option>
                             <option value="DoDelete">Delete</option>
                             <option value="DoRename">Rename</option>
                             <option value="DoCopy">Copy</option>
                           </select>                                   

                    </li>                    
                    <li>
                           <input type="hidden" value="/storage/emulated/0/Pictures/A2.PNG" />
                           <select class="ActionClass">
                             <option value="DoAction">Action</option>
                             <option value="DoDelete">Delete</option>
                             <option value="DoRename">Rename</option>
                             <option value="DoCopy">Copy</option>
                           </select>                                   

                    </li>                   

</ul>

3 个答案:

答案 0 :(得分:1)

请尝试以下操作。

this使用this.parent代替prevsiblings

&#13;
&#13;
$(document).ready(function() {
  function GetHiddle() {
    $(".ActionClass").change(function() {
      var selectValue = $(this).val();

      var fileName = GetHiddenFilename(this);
      alert("My " + fileName);

      if (selectValue == "DoDelete") {

      }

      if (selectValue == "DoRename") {

      }
    });
  }
  function GetHiddenFilename(obj) {
    return $(obj).prev().val();
  }
  
  GetHiddle();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="ul-file">
  <li>
    <input type="hidden" value="/storage/emulated/0/Pictures/A1.PNG" />
    <select class="ActionClass">
      <option value="DoAction">Action</option>
      <option value="DoDelete">Delete</option>
      <option value="DoRename">Rename</option>
      <option value="DoCopy">Copy</option>
     </select>
  </li>
  <li>
    <input type="hidden" value="/storage/emulated/0/Pictures/A2.PNG" />
    <select class="ActionClass">
      <option value="DoAction">Action</option>
      <option value="DoDelete">Delete</option>
      <option value="DoRename">Rename</option>
      <option value="DoCopy">Copy</option>
     </select>
  </li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您的JavaScript中存在许多错误。首先,您没有调用 GetHiddle()函数(不确定这是否是拼写错误,但我将名称保留为原样)。其次,使用您通过jQuery选择器和方法使用函数。最后,兄弟姐妹()是错误的功能,因为你想要后代; find()更合适。以下是使JavaScript运行的修复方法。

function GetHiddle() {
$(".ActionClass").change(function () {
    var selectValue = $(this).val();

    var fileName = GetHiddenFilename($(this).parent());
    alert("My "+fileName);

    if (selectValue == "DoDelete") {
        // Do something
    }

    if (selectValue == "DoRename") {
        // Do something
    }
});

function GetHiddenFilename(obj) {
    return $(obj).find("input[type='hidden']").val();
}

GetHiddle();

答案 2 :(得分:0)

  

你可以简单地使用这个方法   $ foo是id


警报($( '输入#富')VAL());
警报($( '输入[名称= ZYX]')VAL());
警报($( '输入[类型=隐藏]')VAL());
警报($( ':隐藏#富'。)VAL());
警报($( '输入:隐藏[名称= ZYX]')VAL());

相关问题