jQuery val()里面显示:none
<a href="#addFriend" rel="facebox" title="[+] add as friend">
我的表单在这个元素里面是一个jquery灯箱,字段#commentFriend
在DoFriendRequest中获取空值
function DoFriendRequest() { var wrapperId = '#insert_svar'; $.ajax({ type: "POST", url: "misc/AddFriendRequest.php", data: { mode: 'ajax', comment : $('#commentFriend').val() }, success: function(msg) { $(wrapperId).prepend(msg); $('#commentFriend').val(""); } }); }
更新的答案
但当我删除display:none
,它的工作原理。 我怎么解决这个问题?
对于display:none
字段,似乎val()
不起作用。
我用attr()
绕过了这个行为:
$('input').attr('value',myNewValue);
你有三种方法可以解决这个问题;
-
使元素可见,更新它,然后再次隐藏它。
-
从DOM中分离元素,使其可见,更新它,隐藏它,然后重新插入DOM。
-
clone()元素,使其可见,更新它,隐藏它,将其插入DOM并删除原始元素。
方法#2和#3可能是您的最佳选择,因为这些不会触发重新绘制。 所有操作都是对DOM“外部”的元素进行的(如果你愿意的话,在内存中)。 这样你的UI就不会跳/滑动/移动。
方法#3:
$(function () { var e = $("..."); var c = e.clone(); c.show(); c.html("..."); c.hide(); e.after(c); e.remove(); });
射击游戏版本(未测试):
var e = $("..."); e.append(e.clone().show().html("...").hide()).remove();
方法#2:
注意:您将需要一个容器,您可以将分离的元素重新插入其中
$(function () { var e = $("..."); var c = $("container"); e.detach(); e.show(); e.html("..."); e.hide(); c.add(e); });
只是为了好的措施 – 没有经过测试 – 更短的版本:
$("container").add($("...").detach().show().html("...").hide());
我遇到过同样的问题。 上述解决方案都不适合我。 我finnaly我可以通过使用DOM元素获取我的隐藏输入的值:
var el = document.getElementById("commentFriend"); var hiddenValue = el.getAttribute("value");
答案太迟了但也许对某人来说很好。 如果你想要一些带有display:none和使用jQuery或JS函数的元素你需要先用jQuery隐藏元素,然后一切都很好,你可以用addClass来定义你的类或者用.show()
.hide()
和.show()
。
例如
$(document).ready(function() { $('element1').hide(); $('element2').hide(); var element1 = $('element1').val(); console.log(element1); });
与您为示例类.hidden创建的CSS相同并执行此操作。
CSS
.hidden { display:none; }
jQuery的:
$(document).ready(function() { $('element1').addClass('hidden'); $('element2').addClass('hidden'); var element1 = $('element1').val(); console.log(element1); });
Whit JavaScript会为你的元素添加CSS类。