Regex Selector
Trying out this awesome regex selector made by some intelligent dude http://james.padolsey.com/javascript/regex-selector-for-jquery/
by Egli
HTML
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
All the links on the page are...
<br /><br />
<a id="target-1" href="/Pages/Egli.aspx">Yes</a>
<a id="target-4" href="/Pages/Reyes.aspx">Yes</a>
<a id="non-target-1" href="http://www.eglibecerra.com/Pages/Egli.aspx">No</a>
<a id="non-target-2" href="http://www.eglibecerra.com/Pages/Omar.aspx">No</a>
<a id="target-2" href="/Pages/Omar.aspx">Yes</a>
<a id="target-3" href="/Pages/Becerra.aspx">Yes</a>
<a id="non-target-3" href="http://www.eglibecerra.com/Pages/Becerra.aspx">No</a>
<a id="non-target-4" href="http://www.eglibecerra.com/Pages/Reyes.aspx">No</a>
<br />
The links im interested in are:
<br /><br />
CSS
html{font-family:arial; color:#000; font-size:12px;}
a{text-decoration:none; color:#000;}
#target-1,#target-2,#target-3,#target-4{
display:block;
background-color:green;
}
#non-target-1,#non-target-2,#non-target-3,#non-target-4{
display:block;
background-color:red;
}
JavaScript
//The awesome regex selector
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: matchParams.shift().replace(validLabels,'')
},
regexFlags = 'ig',
regex = new RegExp(matchParams.join('').replace(/^s+|s+$/g,''), regexFlags);
return regex.test(jQuery(elem)[attr.method](attr.property));
}
//Dom ready
$(function(){
SelectRelativeLinks();
});
function SelectRelativeLinks(){
// Select all links that start with /Pages/:
$('a:regex(href,^[//Pages//])').each(function(){
$(this).html("Yes I'm the one!");
var oldLink = $(this).attr('href');
var baseURL = GetCorrectedBaseUrl();
$(this).attr('href',baseURL+oldLink);
});
}
function GetCorrectedBaseUrl(){
//TODO:
var baseURL = (window.location.protocol + "//" + window.location.host + "/").toLowerCase();
//Check if I'm on dev environment
if(baseURL.indexOf("dev") > -1){
//Im in dev environment so return dev public url
return "http://gyprockdev.csr.com.au";
}else if(baseURL.indexOf("stage") > -1){
//Im in stage environment so return stage public url
return "http://gyprockstage.csr.com.au";
}else{
//Im in live environment so return live public url
return "http://www.gyprock.com.au";
}
}