jQuery replace href value but only partially? [duplicate]

旧巷老猫 提交于 2019-12-22 05:59:47

问题


Possible Duplicate:
Change href parameter using jQuery

I have a page with several links like this:

<a href="playcats.php?cat='.$catname.'&sl=10" class="golink">

So after PHP page loads it will look like:

<a href="playcats.php?cat=blue&sl=10" class="golink">
<a href="playcats.php?cat=red&sl=10" class="golink">
<a href="playcats.php?cat=yellow&sl=10" class="golink">
...

I want partially change the href for the sl value of all links using jQuery (sl value is picked from a slider = data.value)

I have this:

$(document).ready(function() {
  $('a.golink').each(function() {
    var _href = $(this).attr('href'); 
    $(this).  ( rest of code.. )
  } );
});

And now I do not know how to use replace with regular expressions as I think it is the solution!


回答1:


You might do

 $(this).attr('href', _href.replace(/sl=[^&]+/, 'sl=newval'));

to replace the value of sl by 'newval'.

You can also use a function to build the new value. For example, say you want to multiply by 2 the old sl value, you may do this :

 $(this).attr('href', _href.replace(/sl=([^&]+)/, function(_, oldval) {
      return 'sl='+(2*parseInt(oldval,10))
 }));

You may even avoid using each :

$('a.golink').attr('href', function(i, v){
  return v.replace(/sl=([^&]+)/, function(_, oldval) {
      return 'sl='+(2*parseInt(oldval,10))
  })
});

Demonstration (over the links to see the href)




回答2:


How about using the overload of attr that takes a callback function:

$("a.golink").attr("href", function (_, val) {
    return val.replace(/sl=\d+/gi, "sl=new_value");
});

Inside of the function, this is equal to the current <a> tag, so you could determine what value to use there.

Example: http://jsfiddle.net/6zAN7/5/




回答3:


Try this, long code for understanding...

$('a').each(function(){
    // Change this to get slider value
    slider_value = 25;

    var _href = $(this).attr('href'); 
    _href = _href.split("&");
    _href[_href.length] = "sl=" + slider_value;
    _href = _href.join("&");

    console.log(_href);
});

Using regex:

$('a').each(function(){
    // Change this to get slider value
    slider_value = 25;

    var _href = $(this).attr('href'); 
    _href = _href.replace(/sl=[^&]+/, 'sl=' + slider_value);
});


来源:https://stackoverflow.com/questions/14304260/jquery-replace-href-value-but-only-partially

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!