我正在使用parent()
和find()
方法访问对应按钮的textarea。
但我每次都未定义。我已经在jsfiddle中尝试过了,但这个小提琴起作用了。这是代码
<div>
<textarea id="textarea"></textarea>
<button onclick="commentThis('10')">Post Comment</button>
<button onclick="neverMind('10')">Never Mind</button>
</div>
jQuery代码为
function commentThis(postId) {
var comment = $(this).parent().find("#textarea").val();
if (comment != "" || comment != null) {
$.ajax({
url: "/ajax_requests/post_comment",
data: "postId=" + postId + "&type=comment&comment=" +
comment + "&page=default",
success: function (result) {
$(".comments").append(result);
$("#textarea").val("");
$("#textarea").css("height", "20px");
}
})
}
}
但是它总是给我一个未定义的控制台错误,说不能从undefine属性获取值。
您可以在此处看到错误消息:
这是我创造的小提琴,它起作用。 http://jsfiddle.net/afzaal_ahmad_zeeshan/ZBcby/
答案 0 :(得分:2)
if (comment.value != "" || comment.value != null) {
您获得val()
的价值。你有一个字符串。您正在尝试获取字符串的value
属性。这不起作用。
这将:
if (comment != "" || comment != null) {
或者,事实上,甚至更简单:
if (comment) {
答案 1 :(得分:1)
当您按照以下方式调用您的函数时:
onclick="commentThis(@row.PostId)"
...它没有将this
的值设置为单击的元素。 this
将为window
。您可以将其更改为显式设置this
:
onclick="commentThis.call(this,@row.PostId)"
您还需要更改功能的以下行:
if (comment != "" || comment != null) {
因为如果条件总是为真,因为comment != ""
将为真或comment != null
为真。您可能打算使用&&
代替||
:
if (comment != "" && comment != null) {
...但你可以简化:
if (comment) {
(实际上,假设comment
是调用.val()
的结果,它永远不会是null
,它将是一个字符串或undefined
- 如果你使选择器正确,它将不是undefined
。)