2016-06-10 198 views
1

我試圖更改select optionclick但我不想使用option value。我的代碼工作,如果我給我的按鈕value='3',但我想要的是選擇一個與data-price="0"這在我的情況是value='3'根據屬性更改選擇選項

JS:

jQuery(document).ready(function() { 
    jQuery('#sample-addtocart-button').click(function(){ 
     jQuery('.product-custom-option').val(jQuery(this).attr('value')); 
    }); 
}); 

HTML:

<button value="0" id="sample-addtocart-button" type="button">Free</button> 

<select class="product-custom-option"> 
    <option value="">-- Please Select --</option> 
    <option data-price="10" value="1">£10.00</option> 
    <option data-price="20" value="2">£20.00</option> 
    <option data-price="0" value="3">FREE</option> 
</select> 

任何幫助將不勝感激

回答

2

您可以使用attribute equals selector獲取選項,然後通過設置selected屬性使用prop()方法來選擇選項。

jQuery(document).ready(function() { 
 
    jQuery('#sample-addtocart-button').click(function() { 
 
    jQuery('.product-custom-option option[data-price="' + jQuery(this).attr('value') + '"]').prop('selected', true); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button value="0" id="sample-addtocart-button" type="button">Free</button> 
 

 
<select class="product-custom-option"> 
 
    <option value="">-- Please Select --</option> 
 
    <option data-price="10" value="1">£10.00</option> 
 
    <option data-price="20" value="2">£20.00</option> 
 
    <option data-price="0" value="3">FREE</option> 
 
</select>

+1

乾杯隊友,非常感謝! – Genov

1

您可以通過屬性選擇元素,然後設置元素的selected財產。

jQuery(document).ready(function() { 
    jQuery('#sample-addtocart-button').click(function(){ 
     jQuery('.product-custom-option [data-price=' + this.value + ']').prop("selected", true); 
    }); 
}); 

此選擇具有data-price元素屬性等於的this.value值,這是.product-custom-option後代,並設置其selected屬性true


沒有jQuery的,它可能是這樣的:

document.addEventListener("DOMContentLoaded", function() { 
    document.querySelector('#sample-addtocart-button').addEventListener("click", function(){ 
    document.querySelector('.product-custom-option [data-price=' + this.value + ']').selected = true; 
    }); 
}); 

和輔助方法少數始終與冗長的幫助:

function listen(el, typ, fn, cap) { 
    el && el.addEventListener(typ, fn, cap) 
} 
function query(el, sel) { 
    if (typeof el === "string") { 
    sel = el; 
    el = document; 
    } 
    return el.querySelector(sel) 
} 

listen(document, "DOMContentLoaded", function() { 
    listen(query('#sample-addtocart-button'), "click", function(){ 
    query('.product-custom-option [data-price=' + this.value + ']').selected = true; 
    }); 
}); 
+0

乾杯伴侶,非常感謝! – Genov

+0

我的榮幸。很高興幫助。 – 2016-06-10 14:03:56

0

試試這個:

jQuery('#sample-addtocart-button').click(function(){ 
     var val= jQuery(this).attr('value'); 
     jQuery('.product-custom-option option[data-price='+val+']').prop('selected', true); // it will find the select option with certain data-price and make it selected 
});