我将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>
答案 0 :(得分:1)
请尝试以下操作。
this
使用this.parent
代替prev
和siblings
。
$(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;
答案 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());