【发布时间】:2012-02-12 03:58:05
【问题描述】:
我编写了一个可以工作但很难看的函数。我很确定有更好的方法来做我想做的事,结果可能很丑,因为我在 javascript 方面不是很好:D
我有一些 html 元素可能有一个名为 view-in-box 或 view-in-box-640-480 的类。如果类只是view-in-box,则会出现一个对话框,其中包含一些默认宽度和高度,否则它将显示类名中指定的宽度和高度。
html 元素类可以是:class='note comment ui-button view-in-box-300-200 footer star'。
到目前为止,我所做的是选择其中包含 view-in-box 的所有元素:
$('body').delegate('[class*=view-in-box]','click', function(){
然后我获取整个类属性并循环它以检查是否可以找到view-in-box。
这是(简化的)代码:
$('body').delegate('[class*=view-in-box]','click', function(){
...
var class_array = $(this).attr('class').split(" ");
for (var i = 0; i < class_array.length; i++) {
if (class_array[i].search('view-in-box-') != -1) {
box_text = class_array[i];
break;
}
}
if (box_text !== null) {
box_array = box_text.split('-');
....
}
....
return false;
});
所以我想知道,有没有办法直接返回我的函数中匹配 view-in-box 谓词的内容?例如view-in-box 或view-in-box-233-455。还是我真的必须获取完整的类属性并拆分它。
希望我很清楚,javascript 让我感到困惑! 谢谢。
【问题讨论】:
-
可以使用jquery的hasClass方法
-
hasClass 可以采用带有'*'的模式?!而且我仍然需要获取这些宽度和高度值。
-
hasClass不太合适。您必须知道类的名称,因为它不支持通配符,而且无论如何,它不返回类名,只是一个布尔值。问题是,为什么不通过 css 类本身应用宽度/高度? -
因为我需要为我可能需要的所有宽度/高度创建很多 css 类,对吗?当我添加新的宽度/高度时,甚至必须记住创建类。使用我的方法,您只需发送所需的任何内容,对话框就会动态获得正确的大小。或者我很笨,我错过了一些明显的东西?喜欢动态css? :D
标签: jquery html css-selectors jquery-selectors