使用 jQuery 搜索所有具有 "display:inline-block" 样式的 CSS。

4

是否可以通过属性:值而不是选择器/属性来搜索CSS?还是需要通过服务器脚本解析?

如果可能的话,我打算创建一个脚本,如果选择器具有 display: inline-block,则自动添加IE7 hack,因为我已经厌倦了编写 *display: inline; zoom: 1;


你需要什么hack?HTML5 Shiv?Clearfix?有许多方法可以在IE上实现这些,而不需要任何hack。如果你需要更具体的东西,可以使用IE条件块和仅限IE的样式。 - Fabrício Matté
你应该使用CSS重置或其他类型的CSS样式表来纠正这种行为,而不是让JS操作每个inline-block DOM节点,因为仅针对IE进行条件设置或重置要便宜得多。 - rlemon
2个回答

4
如果您直接将样式添加到元素中,可以按以下方式进行筛选:
代码1
$("[style*='inline-block']"); 但是,如果样式是使用CSS计算的,则上面的代码将无法获取元素,这种情况下,可以使用以下方法。
代码2
$('*').filter(function() {
    return $(this).css('display') == 'inline-block';
});

所以,如果我有以下HTML代码。
<div style="display: inline-block"></div>
<div class="someClass"></div>

代码1只获取第一个。
代码2获取两个都。


2
这段代码应该允许你在元素被设置为inline-block样式时处理某些内容。
$("body *").each(function (i) {
    if ($(this).css('display') == "inline-block") {
        //inline block - do what you need to do
        this.style.color = "blue";
        alert($(this).css('display'));            
    }
});

请参考这个jsfiddle的工作示例: http://jsfiddle.net/nevtn/ 以下是您需要的完整脚本:
$(document).ready(function(){

if ($.browser.msie  && parseInt($.browser.version, 10) === 7) {
    $("body *").each(function (i) {
        if ($(this).css('display') == "inline-block") {
            //inline block - do what you need to do
            $(this).css({'display':'inline', 'zoom':'1'});  
        }
    });
}

});​

示例演示(模拟IE7)http://jsfiddle.net/nevtn/5/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接