【问题标题】:Create CSS rule from query string从查询字符串创建 CSS 规则
【发布时间】:2014-08-03 21:28:33
【问题描述】:

获取查询字符串

var queryString = window.location.search;

删除?从查询字符串的开头

queryString = queryString.substring(1);

查询字符串处理器

var parseQueryString = function( queryString ) {
    var params = {}, queries, temp, i, l;
    // Split into key/value pairs
    queries = queryString.split("&");
    // Convert the array of strings into an object
    for ( i = 0, l = queries.length; i < l; i++ ) {
        temp = queries[i].split('=');
        params[temp[0]] = temp[1];
    }
    return params;
};

//查询字符串对象

var pageParams = parseQueryString(queryString);

// CSS 变量

var target = pageParams.target;
var prop = pageParams.prop;
var value = pageParams.value;

//无法上班-->

jQuery(target).css({
    prop : value,
});

我希望能够提供类似“?target=body&prop=display&value=none”这样的查询,并使整个正文消失或按其类定位某些元素。

【问题讨论】:

    标签: javascript jquery css query-string


    【解决方案1】:

    您将无法将prop 用作要传递给.css() 的对象的键变量。在这种情况下,它将转换为文字字符串'prop'。相反,您必须执行以下操作:

    jQuery(target).css(prop,value);
    

    注意:请注意该哈希中的尾随逗号(value 之后)。某些浏览器此时会出错。

    【讨论】:

      【解决方案2】:

      为了创建一个可以传递给 jQuery 的 css 对象,我建议如下:

      // Create css obj
      var cssObj = {};
      cssObj[prop] = value;
      

      在此之后,代码对我来说可以正常工作。在此处查看完整的解决方案:

      http://jsfiddle.net/q97DH/4/

      我建议使用正则表达式删除问号 - 请参阅下面的评论。

      【讨论】:

      • 他使用substring的原因是为了去掉?。出于某种原因,我认为某些浏览器不包含?,因此他的方法可能不是最安全的。无论如何,您应该修改您的正则表达式(替换),使其仅删除字符串开头的问号,以便不会删除后续问号:queryString.replace(/^\?/,'');
      • 杰普,我错过了那句话。我已经编辑了答案,谢谢提示:-)
      • 关于正则表达式:我同意,但我没有使用正则表达式。我只是用替换。但是,字符串后面的问号(可能已转义)也会被删除,这可能很关键。所以让我们准确地说,我会改变小提琴。
      • 是的 :) 我认为所有 replace 都是正则表达式。我可能错了,但出于某种原因,我认为它在后台使用了正则表达式,即使将字符串作为匹配模式传递也是如此。检查第一个字符是否是问号仍然不是一个坏主意,因为我仍然认为有些浏览器包含它,而另一些则排除它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2016-08-13
      • 2016-11-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多