javascript - 带有选项(select)的jquery选择器抛出错误

标签 javascript jquery

在用户报告此行为后我注意到了这一点,因为它在 Chrome、Firefox 和 IE8+ 上运行良好。然而,在 IE7 中,有以下选择器:

$('#parentjobs option')
$('#parentjobs option:not(:contains("new"))')

抛出此错误:

Error: Unable to get value of the property '0': object is null or undefined

指向 jquery-1.8.3 上的第 5126 行:

context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];

我没有安装 IE7,但在 IE 调试页面(F12)将文档模式和浏览器模式切换到 IE7 时可以重现该错误

知道可能出了什么问题吗?

最佳答案

我不确定问题是什么,但可能会以不同的方式使其跨浏览器工作,那就是使用 filter :

$("#parentjobs").find("option").filter(function () {
    return $(this).text().indexOf("new") === -1;
});

这表示“仅包含不包含文本“new”的 <option> 元素”...并且应该执行与原始选择器相同的操作。

filter根据 return 的结果包含/排除元素。如果true返回后,该元素保留在列表中。如果false返回后,该元素将从列表中删除。

使用.text():contains() 相同看着,然后 === -1表示找到文本。

这可能只是我的问题,但我喜欢更明确地选择元素,远离长选择器(尤其是伪选择器)并使用 jQuery 方法。虽然这可能会使您的选择速度稍慢(不允许 jQuery 优化 native 浏览器方法),但它更容易调试,并且对我来说比大字符串看起来更干净(希望在所有浏览器中都适用)。

引用:

关于javascript - 带有选项(select)的jquery选择器抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16284843/

相关文章:

javascript - Sequelize with PostgreSQL 中与外键约束的丰富自关联

javascript - 使用node.js和socket.io的协作文本工具

javascript - Velocity.js:第一组对象完成后对第二组对象进行动画处理

php - 限制每 30 分钟发布一次

javascript - 如何在 CasperJS 中的 document.ready(function(){ }) 之后获取文本区域的值

javascript - 在 Internet Explorer 中输入文件长度

jQuery .html() 与 .append()

Javascript,如何将标签属性中的所有值放入数组中?

jquery - css <li> 在 chrome onload 中重叠

javascript - 使用 jQuery.when 时奇怪的变量初始化