javascript - custom tag containing data in option -
i having list of stuff user can select. way it's made, have integer name, price value need add color. it's not unique cannot use id.
example :
<option name='6' value="30.95">6 orange(30.95$/month)</option> <option name='6' value="33.95">6 green(33.95$/month)</option> <option name='10' value="32.95">10 orange(32.95$/month)</option> <option name='10' value="35.95">10 green(35.95$/month)</option> i need combine 2 non-unique values , them accessible jquery / javascript
i not make 2 selects. know it's straightforward easiest solution if stick single 1 give better results.
is safe create custom tag "prodcolor" non-reserved nametag or there smarter way achieve this?
many once again.
you can use html5 data- attributes, invented purpose. more importantly, values of data- attributes can accessed using js.
since want include colour, can use data-colour attribute, example:
<option name='6' value="30.95" data-colour="orange">6 orange(30.95$/month)</option> <option name='6' value="33.95" data-colour="green">6 green(33.95$/month)</option> <option name='10' value="32.95" data-colour="orange">10 orange(32.95$/month)</option> <option name='10' value="35.95" data-colour="green">10 green(35.95$/month)</option> even better: actually, shouldn't use name attribute store quantity. why not use data-quantity instead? :)
<option data-quantity="6" value="30.95" data-colour="orange">6 orange(30.95$/month)</option> <option data-quantity="6" value="33.95" data-colour="green">6 green(33.95$/month)</option> <option data-quantity="10" value="32.95" data-colour="orange">10 orange(32.95$/month)</option> <option data-quantity="10" value="35.95" data-colour="green">10 green(35.95$/month)</option> some background:
there's nice guide published mozilla on how use js access such attributes. note recommended use dash (-) separated attributes, instead of other naming convention, e.g. data-product-name instead of data-productname. because .dataset method in js converts dash-separated data attributes camelcase. data-product-name accessible via .dataset.productname, example.
jquery allows access values of data- attributes via .attr() or .data() methods. difference that:
.attr()not cached, can use access dynamically-modifieddata-attributes, while.datareads data attributes @ runtime..attr()can used read and write data attributes,.data()can used read data attributes dom..data()used access jquery data object not written dom.
usage example:
using code above, can create simple example of alerting colour of product upon firing of change event:
$(function() { $('select').change(function() { var $choice = $(this).find('option:selected') alert('colour: ' + $choice.attr('data-colour') + '\n' + 'price: $' + $choice.val()); }); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select> <option name='6' value="30.95" data-colour="orange">6 orange(30.95$/month)</option> <option name='6' value="33.95" data-colour="green">6 green(33.95$/month)</option> <option name='10' value="32.95" data-colour="orange">10 orange(32.95$/month)</option> <option name='10' value="35.95" data-colour="green">10 green(35.95$/month)</option> </select>
Comments
Post a Comment