2012-01-01 174 views
1

我是jquery的新手&我试图在没有任何运气的情况下自行解决此问题。如何使用jQuery更改基于查询字符串的CSS属性值

我需要使用jQuery根据QueryString更改CSS中的值。我尝试了几个不起作用的脚本。

URL例:http:www.xyz.com/Page.aspx?pageID=101&Language=arabic

基于对我有显示页面之前更改.Image4x4类和verticleBarfloat:right的CSS值的URL指定的语言。

.Image4x4 
    { 
     width:670px; 
     float:left; /* for arabic keep right */ 
     height:550px; 
     background-color:Orange; 
    } 
    .verticleBar 
    { 
     width:220px; 
     float:left; /* for arabic keep right */ 
     height:550px; 
     background-color:Red; 
    } 

我尝试了几个脚本,但它没有按照计划工作。

我将不胜感激任何帮助。

+0

这是因为阿拉伯语是从右向左阅读(RTL)? – 2012-01-01 20:21:13

+0

@Ayman:是的,我必须改变布局作为其他语言是阿拉伯语 – Learning 2012-01-02 07:08:53

回答

3
var queryValues = {}; 

$.each(window.location.href.split('?').pop().split('&'), function (i, v) 
{ 
    var v = v.split('='); 
    if(v.length > 1) // prevent v[1] from erroring if no querystring present 
     queryValues[ v[0].toLowerCase() ] = v[1].toLowerCase(); 
}); 

if (queryValues.language == 'arabic') 
{ 
    $('.Image4x4, .verticleBar').css('float', 'right'); 
} 

如果你不确定总会有一个查询字符串,你应该添加代码来检查。

+1

这是一个美丽的解决方案 - +1 – 2012-01-01 20:33:19

+0

你可以使用window.location.search而不是window.location.href,这样你只能解析查询字符串部分的网址。请参阅https://developer.mozilla.org/en/DOM/window.location#Properties – Leo 2012-01-01 21:06:11

+0

@Leo - 但我无论如何必须从字符串的开头删除'?'... – 2012-01-01 23:37:01

1

我提出了一个JavaScript的独立的解决方案...

假设你需要做到这一点,因为阿拉伯语读从右到左(RTL),使用ASP创建的是RTL语言列表。每当URL中设置的语言都在这个列表中时,给<body>标签一个“rtl”类?

如果是的话,你可以这样做:

.rtl .Image4x4, .rtl .verticleBar 
{ 
    float:left; /* for arabic keep right */ 
} 

这样,您就能够处理任何RTL语言。

+0

你如何建议基于查询字符串进行更改? – 2012-01-01 20:15:40

+0

@Ayman。我嵌套的div标签,它将div标签中的所有文本按照RTL或LTR对齐,但它不会更改位于右侧的英文div标签的位置,也就是说,我必须使用jQuery来更改它们。 – Learning 2012-01-02 06:48:19

+0

@Ayman:我试过了,即使我硬编码它也不起作用。我已经定义了我刚刚提到的CSS,但它不起作用。 – Learning 2012-01-02 06:54:45