将String作为参数传递到jQuery函数中
Passing String as parameter into jQuery function
我遇到了一个奇怪的jQuery问题。我正在编写一个函数,它接受一个字符串作为参数,然后将该字符串输入到jQuery选择器中。
以下是功能:
function myFunction(specialfields) {
if(!$(specialfields).is(':focus')) {
alert('thats not in focus');
}
}
然而,我一直得到这个错误:
Uncaught Syntax error, unrecognized expression: focus
但奇怪的是,当不接受参数时,'.is(':focus'('在其他领域也能工作,如果我传递这个:
$(specialfields)
它确实读取为有效对象。我正在尝试传递这样的字符串:
#id1, #id2
此外,这项工作:
$(specialfields).val()
有人知道这里发生了什么吗?
好吧,我认为问题是我将两个参数传递到"specialfields"中,这破坏了":focus"选择器,因为很明显,你不能同时将两个字段放在焦点上。
它可以通过在函数中只传递一个选择器来修复。
结论
你的方法一直有效,而且比我浪费时间的方法更快。
详细信息
我对函数的定义有点不同,我通过将响应传递给<p id="response">
来替换alert()
功能。
HTML:
<input type="text" name="id1" id="id1" />
<br />
<input type="text" name="id2" id="id2" />
<br />
<p id="response">response</p>
JavaScript:
var myFunction = function (specialfields) {
if ($(specialfields + ':focus').length === 0) {
$('#response').text(specialfields + ' is not in focus');
} else {
$('#response').text(specialfields + ' is in focus');
}
};
请参阅http://jsfiddle.net/jhfrench/UufWD/作为一个工作示例。
您会注意到,我使用if ($(specialfields + ':focus').length === 0)
来评估:focus
的传入参数。
我原以为这样会更快,但事实并非如此
从好的方面来看,此方法确实处理多个选择器参数(如#id1, #id2')
;请参阅http://jsfiddle.net/jhfrench/UufWD/19/)。但你最初对if(!$(specialfields).is(':focus'))
的评价更好。
现在看http://jsfiddle.net/jhfrench/UufWD/14/为您的方法提供一个工作示例。
I think .focus() should be enough, as :focus is not a selector.
没有本机解决方案,但有一种更优雅的方法可以做到:
jQuery.extend(jQuery.expr[':'], {
focus: "a == document.activeElement"
});
您正在定义一个新选择器。请参见插件/编写。然后你可以做:
if ($("...").is(":focus")) {
...
}
来源--是否存在';具有焦点';在JavaScript(或jQuery(中?
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量