使用js动态替换现有的HTML链接?

时间:2018-01-17 21:42:02

标签: javascript php jquery html

我使用Joomla并使用收音机盒选择购买选项。 一切正常,我能够动态更新显示给用户的信息。

我的问题是在选择选项时更新购买链接。我当前用于更新前端的js代码是:

jQuery(function($){
$(document).ready(function(){
$('#pricing').text('R'+'<?php echo (int)$opt1_o_price ?>');
$('#savings').text('R'+'<?php echo $opt1_save ?>');
$('#discount').text(Math.round('<?php echo $perc1 ?>')+'%');
}); 
$('.item').on('change',function(){
$('#pricing').text('R'+($(this).data('price')));
$('#savings').text('R'+($(this).data('price')-$(this).data('after')));
$('#discount').text(Math.round(100-
($(this).data('after')/$(this).data('price')*100))+'%');
$('input[name=sku]').val($(this).data('sku'));

用于生成链接的代码是:

<a href="<?php echo JRoute::_('my-groupbuy-cart?&task=add_to_cart&id='.$cmgbstore_id).'&option_id=1'; ?>"</a>

我已经可以使用&#34; $ cmgbstore_id&#34;来选择ID。因为它在页面加载时被加载,但我需要能够更改&#34; option_id&#34;在链接的末尾,使用他们在单选框中选择的选项。该值始终为&#34; 1&#34;,&#34; 2&#34;或&#34; 3&#34;。 我的无线电盒代码的一个例子是:

<div class="product-options">
<div class="option-input">
     <input id="1" type="radio" value= "1" name="product-option" class="radio item" checked="checked" data-sku="1001" data-price="<?php echo (int)$opt1_o_price ?>" data-save="<?php echo (int)$opt1_save?>" data-after="<?php echo (int)$opt1_d_price ?>" />
      </div>
      <label for="1" class="option-detail">
        <span class="option-title"><?php echo $opt1_title ?></span>
        <span class="option-price">R<?php echo $opt1_o_price ?></span>
        <span class="option-was-price">R<?php echo $opt1_d_price ?></span>
        <span class="option-discount">Save R<?php echo $opt1_save .'.00'?></span>
</label>

我尝试在js中使用append选项,但每次选项更改时,都会添加另一个购买按钮。它也会在页面末尾添加,而不是原始购买按钮的位置。我试过的代码是这样的:

var link = document.createElement('a');
link.setAttribute('href', 'my-groupbuy-cart?&task=add_to_cart&id='+'<?php echo $cmgbstore_id ?>'+'&option_id=1');
link.innerHTML = "BUY NOW";
$('body').append(link);

我可以提供建议,非常感谢任何帮助! 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用我最初问题的回复计算出来。 如果其他人需要它我做了什么:DEMO - https://jsfiddle.net/nbucona8/4/

这比我想象的要简单,但正如@IncredibleHat上面说的那样我需要使用  $( selector ).attr('href','http://new/value');,所以我做到了:

$( "a[name='buy-button']" ).attr("href","/somelink/"+ dealid +"&option_id="+ $(this).attr("value"));

它返回任何名为“buy-button”的<a>元素,并将href更改为正确的option_id。

所以我用以下方式拨打购买链接:

<a name="buy-button" href=""> BUY NOW! </a>

每当收音机选项更改时,都会使用以下内容更改option_id:

 $(this).attr("value")

在链接的末尾。

感谢所有帮助过的人。