JQuery-存在css类元素的测试.长度不'不起作用
JQuery - Test for a css class element exists. .length doesn't work
我需要检查HTML中是否存在css类的元素。我在谷歌上搜索过这里,通常的答案是使用.length>0。
但这行不通。我得到一个"预期对象"错误。非常感谢您的帮助。
<script type="text/javascript">
if ($(".deleteLink").length != 0)
{
$(".deleteLink").click(function () { return confirm('some message?'); });
}
</script>
.deleteLink是一个css类,它属于可能存在也可能不存在的标记。我得到了条件部分的错误。
我是不是错过了什么??因为似乎每个人都说要使用.length…
检查length
是正确的方法。你的代码还有其他问题。您可能忘记包含jQuery了吗?有什么东西在敲打$
吗?在比IE更好的环境中运行它,可以获得更有意义的错误消息。
还有一些小技巧。if ($(...).length)
就足够了,因为0是伪造的,不需要进行比较。此外,在使用jQuery操作元素之前,您不需要检查元素是否存在(如果它是轻量级的,比如只附加一个事件处理程序)。处理一个空的jQuery结果没有任何作用。
为什么这个代码可以
如果加载了jQuery,并且$
是它的别名(这是默认值),那么脚本不应该抛出错误。
你也可以简单地写:
$(".deleteLink").click(function(){ return confirm('some message?'); });
因为如果选择器找不到任何元素,则不会将事件处理程序分配给任何元素。
可能存在的问题&解决方案
您面临的问题是以下之一:
- jQuery未加载,或者
$
不是jQuery
的别名
要解决第一个问题,只需在这部分代码之前加载jQuery。要解决第二个问题,您可以简单地使用jQuery
而不是$
。
如何改进代码
另一种可能性是,在执行代码时,元素不可用。如果不动态加载,则可以在DOM就绪时执行代码:
jQuery(function(){
jQuery(".deleteLink").click(function(){ return confirm('some message?'); });
});
这是您已经收到的答案的总和。
标题中的标签应该是这样的:
<head>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
<script>
$(function() {
$(".deleteLink").click(function () { return confirm('some message?'); });
});
</script>
</head>
- 在使用jquery库之前先加载它
- $(function(){});只保证只有在文档准备就绪(元素已加载)时才运行脚本
- 不需要"if"语句,如果找不到元素,则click事件将不附加到任何元素
相关文章:
- Object.defineProperty()在测试(jpm运行)过程中有效,但不起作用;使用实际xpi时,不要执行任何
- 摩卡/柴异步测试 'done()' fn 不起作用
- JavaScript 我测试密码的函数不起作用
- GWO 测试:多个测试页面在预览中不起作用
- 使用间谍进行茉莉花测试,$httpBackend不起作用
- jQuery 焦点事件似乎在 qUnit 测试中不起作用
- 在本地主机上.php文件中测试 jQuery,但不起作用
- $injector在我的测试中不起作用,为什么
- 使用 PHP /MySQL JavaScript 创建一个简单的 Web 开发测试,但不起作用
- 为什么我的 javascript 在测试环境中工作,但在实时站点上不起作用
- 简单的要求JS测试不起作用
- 在 Android < 3 上测试 Overflow-y:Auto Return true,即使它不起作用
- FB.getLoginStatus对我有用,但对我的测试人员不起作用
- 我正在进行在线测试,一切都完成了.但是我的自动提交计时器不起作用
- Javascript if/else 语句不起作用,但是里面的代码就像我在没有 if/else 的情况下测试的那样
- jQueryAjax测试不起作用
- 继承在react-mocha测试中不起作用
- 用Blanket测试Mocha的覆盖率;不起作用
- jQuery在发布到测试服务器后立即不起作用
- 使用$httpBackend测试Jasmine/Karma的AngularJS不起作用