将javascript var添加到href

时间:2016-03-30 11:29:05

标签: javascript jquery html

我有不同链接的下拉列表,在此之前我有2个单选按钮,您可以选择"模式"。

<div class="radio">
  <label><input type="radio" name="mode" checked="checked" value="mode1">MODE1</label>
</div>
<div class="radio">
  <label><input type="radio" name="mode" value="mode2">MODE2</label>
</div>


<div class="dropdown">
  <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Choose site
  <span class="caret"></span></button>
  <ul class="dropdown-menu">
    <li><a target="_blank" href="http://example.com/index.php?mode=">Site1</a></li>
    <li><a target="_blank" href="http://example.com/index.php?mode=">Site2</a></li>
    <li><a target="_blank" href="http://example.com/index.php?mode=">Site3</a></li>
  </ul>
</div>

我使用此代码段来检测选择的模式并将其添加到var模式:

$(document).ready(function() {
    var myRadio = $('input[name=mode]');
    myRadio.on('change', function () {
        var mode=myRadio.filter(':checked').val();
    });            
});

我想要做的是将javascript var $ mode添加到href标签。

HREF =&#34; HTTP://example.com/index.php模式= {$模式}

我怎么能做到这一点?

我认为只有用一些javascript函数才能做到这一点? 它不可能只是&#34;打印&#34; var to href?

JSFIDDLE:https://jsfiddle.net/DTcHh/18683/

4 个答案:

答案 0 :(得分:2)

  

使用data-*属性保留稍后要使用的静态href值。 .change()最初会触发更改事件,以设置href属性的值。

$(document).ready(function() {
  var myRadio = $('input[name=mode]');
  myRadio.on('change', function() {
    var mode = myRadio.filter(':checked').val();
    $('ul.dropdown-menu a').prop('href', function() {
      return this.getAttribute('data-href') + mode;
    })
  }).change();
});
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="radio">
  <label>
    <input type="radio" name="mode" checked="checked" value="mode1">MODE1</label>
</div>
<div class="radio">
  <label>
    <input type="radio" name="mode" value="mode2">MODE2</label>
</div>


<div class="dropdown">
  <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Choose site
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu">
    <li><a target="_blank" href="http://site1.com/index.php?mode=" data-href="http://site1.com/index.php?mode=">Site1</a>
    </li>
    <li><a target="_blank" href="http://site2.com/index.php?mode=" data-href="http://site2.com/index.php?mode=">Site2</a>
    </li>
    <li><a target="_blank" href="http://site3.com/index.php?mode=" data-href="http://site3.com/index.php?mode=">Site3</a>
    </li>
  </ul>
</div>

Fiddle here

答案 1 :(得分:0)

试试这个: -

typedef struct IppiPoint;
... warning C4091: 'typedef ' : ignored on left of 'IppiPoint' when no variable is declared
... error C2371: 'IppiPoint' : redefinition; different basic types

DEMO

答案 2 :(得分:0)

检查我为你修改过的小提琴:https://jsfiddle.net/so2fw1o4/1/

将此添加到您的myRadio.on('change',功能

//here change the urls
    $('.dropdown-menu a').each(function(){
      $(this).attr('href', $(this).data('url') + mode)
    })

您需要为每个链接添加数据属性以存储初始链接

<a target="_blank" data-url="http://site. com/index.php?mode=" href="http://site. com/index.php?mode=">Site1</a>

答案 3 :(得分:0)

虽然你已经有了一些答案,但我想我会发布另一种选择(不一定更好)。

您可以为每个链接添加一个类,处理他们的点击事件,并自己设置新窗口的位置以实现类似的效果。

以下是修改小提琴中jQuery的代码片段:

$(document).ready(function() {
  var myRadio = $('input[name=mode]');
  var mode = myRadio.filter(':checked').val(); // Initial setting

  myRadio.on('change', function () {
    mode=myRadio.filter(':checked').val();
  });

  $('.mode-link').click(function(e) {
    e.preventDefault(); //stop the click action

    // Check if the mode has been set
    if (mode) {
      // Create the href value
      var newHref = $(this).attr('href') + mode;

      // Open the new tab/window with the correct href value
      window.open(
        newHref,
        '_blank'
      );
    }
  });
});

我只是将mode-link类添加到下拉列表中的每个a元素,将单选按钮值更改存储在新变量mode中,添加了click事件处理程序,最后处理click事件以创建新的href值,并打开一个包含该位置的新选项卡/窗口。

如果你不想要新的标签/窗口,你只需设置location.href = newHref,但这不会模仿新的标签/窗口打开,因此我使用window.open()

我在这里有一个经过修改的示例:JSFiddle