按数据属性的 jQuery 选择器在 Safari 中不起作用

标签 jquery

以下内容在 FF 中显示警报一和二,但在 Safari 中仅显示警报一。此行中的任何内容在 Safari 中是否不兼容? if($('div[data-foo="'+bar+'"').hasClass('baz')){

jQuery

alert('one');
if($('div[data-foo="'+bar+'"').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}

HTML

<div data-foo="bar" class="baz"></div>

最佳答案

您缺少右括号]。此外,在本例中, bar 是字符串文字,而不是变量。这有效:

alert('one');
if($('div[data-foo="bar"]').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}

或者您可以将 bar 定义为变量:

var bar = "bar";
alert('one');
if($('div[data-foo="' + bar + '"]').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}

(不确定以前在 Firefox 中是如何工作的。)

关于按数据属性的 jQuery 选择器在 Safari 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528955/

相关文章:

javascript - 使用 jquery 工具时如何停止在表单中的某些输入上显示工具提示

javascript - 如何在将鼠标悬停在不同元素上时激活和停用元素的 css 类?

javascript - 如何使用 angularjs 更改另一个选择标签的值?

javascript - 循环遍历 jquery data() 对象以获取键和值

javascript - 创建对 Angular 线 border-radius

javascript - 静音我页面的任何声音。如何?

jQuery 不会对 Rails 中通过 AJAX 渲染的部分起作用

javascript - 确保在 componentDidUpdate() 和 componentDidMount() 中只运行一次

javascript - 根据过去的时间更改 div 上的 CSS 类

javascript - JQuery 面板 - 左侧菜单高度