作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 javascript 函数,在大多数情况下,需要对我传递给它的 jQuery 对象执行某些操作。有一个异常(exception),该函数不需要 jQuery 对象,但因为我编写它来接受字符串(命令)和 jQuery 对象,所以当我调用它时,我需要一些东西来传递它。我的功能如下:
function handleNotes(command, $item) {
var $textArea = $('#textarea_' + currentDialog); // currentDialog = global var
var $notesDiv = $('#' + $item.attr('id') + "_notes");
switch (command) {
case "show":
// do something with $notesDiv and $textArea
break;
case "hide":
// do something with $notesDiv and $textArea
});
break;
case "hide only":
// do something with $textArea only
}
}
我遇到问题的函数调用是:
handleNotes("hide only");
我尝试过handleNotes("hide only", null)
,并且尝试过handleNotes("hide only", Object)
但没有成功。有什么想法吗?
谢谢。
更新
正如很多人回答的那样,事实证明我没有测试 $item 是否为空,因此它每次都尝试设置为某些内容(无论是否将对象传递给它)。我将函数代码更改为:
function handleNotes(command, $item) {
var $textArea = $('#textarea_' + currentDialog); // currentDialog = global var
if($item) { // if not null
var $notesDiv = $('#' + $item.attr('id') + "_notes");
}
switch (command) {
case "show":
// do something with $notesDiv and $textArea
break;
case "hide":
// do something with $notesDiv and $textArea
});
break;
case "hide only":
// do something with $textArea only
}
}
我的函数调用:handleNotes("hide only", null);
看起来工作正常。作为我原来问题的答案,“null”似乎足以作为空白或虚拟对象,或者根本不需要传递它,在这种情况下,函数会自动为其分配一个空值。感谢您的回复。
最佳答案
您可以通过在尝试访问 attr
方法之前测试 $item
是否已设置来避免错误,如下所示:
function handleNotes(command, $item) {
if ($item) {
...
var $textArea = $('#textarea_' + currentDialog); // currentDialog = global var
var $notesDiv = $('#' + $item.attr('id') + "_notes");
etc..
然后,如果您使用 handleNotes("hide only", null)
调用该方法,您将避免执行您想要使用 jQuery 对象执行的代码。
关于javascript - 如何将虚拟 jQuery 对象传递给 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1787390/
我是一名优秀的程序员,十分优秀!