Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素的Javascript选择器/非CSS选择器_Javascript_Jquery_Css_Jquery Selectors_Css Selectors - Fatal编程技术网

元素的Javascript选择器/非CSS选择器

元素的Javascript选择器/非CSS选择器,javascript,jquery,css,jquery-selectors,css-selectors,Javascript,Jquery,Css,Jquery Selectors,Css Selectors,作为一名在团队中工作的前端开发人员,我发现自己多次解决了一个重复出现的问题。 例如,我们的许多前端javascript代码都是使用jQuery和CSS选择器编写的(主要针对CSS“类”)。问题是,很多时候,另一个正在修复CSS代码的开发人员会删除一个类,或者更改将其嵌套在另一个元素下的DOM元素,从而导致JS代码中断 为了防止出现这种情况,我的想法是为我们想要用于Javascript的每个元素使用/添加一个“datajs”属性。但是,我不确定这样编写的jQuery选择器的性能: $('[data

作为一名在团队中工作的前端开发人员,我发现自己多次解决了一个重复出现的问题。 例如,我们的许多前端javascript代码都是使用jQuery和CSS选择器编写的(主要针对CSS“类”)。问题是,很多时候,另一个正在修复CSS代码的开发人员会删除一个类,或者更改将其嵌套在另一个元素下的DOM元素,从而导致JS代码中断

为了防止出现这种情况,我的想法是为我们想要用于Javascript的每个元素使用/添加一个“datajs”属性。但是,我不确定这样编写的jQuery选择器的性能:

$('[data-js="my_js_selector"]').click();
我的另一个想法是向dom元素添加一个js特定的类,该元素以某种方式由Javascript操纵:

<a href="lol.com" class="js-link">link</a>

然后用
$('.js link')简单地调用它。单击()

如果您只查看HTML并告诉某些元素附加了一些Javascript操作,而不实际查看JS代码,那就太好了

这是个好主意吗?或者,还有其他一些最佳实践可以将JS触发与CSS样式区分开来吗

在(SMACSS)中,Jonathan Snook教授“state”类,如您建议使用的
.js link
是最好的方法

相关讨论见以下章节:

子模块样式在渲染时应用于元素,然后 再也不会改变了。但是,状态样式将应用于 元素来指示页面仍在运行时状态的更改 在客户端计算机上

例如,单击选项卡将激活该选项卡。因此 处于活动状态或选项卡处于活动状态是合适的。单击对话框 关闭按钮将隐藏对话框。因此,隐藏的类是 合适

这与两位评论者的说法相矛盾。CSS代码和类应该是灵活的;CSS开发人员应该能够重构和改进代码,而不用担心破坏与表示无关的功能


@ArunPJohny提出的观点支持国家级方法。不幸的是,与识别任意自定义属性(如
foo-
)相比,引擎没有优化以识别
数据-
属性。请看这里的性能:这对性能有害!!!如果您没有任何选择,可以使用带前缀的类名,如
js classname
,请参见您不应该让他们更改您指定的类。类在jQuery中也变成了标记,所以它们变成了变量中所期望的值。一个好的实践是尊重和强制尊重所使用的类及其目的。使用独特而怪异的类名,一个“.wierdClass”选择器来选择你的特性,如果他们不尊重你的类,就踢他们的屁股。站点中的类必须是以前定义的约定。您好,David。没有人天生就有无限的知识。如果我知道答案,我就不会问这个问题了。没有什么能让我认为datajs是一个javascript选择器,正如我所说的,这只是一个想法,而“对主题的理解有缺陷”正是我问这个问题的原因。是的。回答很好!谢谢,我将查看文章以了解更多信息:)