2014-09-23 78 views
1

我与选择框的工作过程中一个选择框访问的数据值与JavaScript onchange事件如下图所示,如何onchange事件

<select onchange="changeprice(this);" > 
    <option value="" selected="">Please select an option</option> 
    <option value="17" data-operator="+" data-differ="0.00">2 Tons (+ $0.00)</option> 
    <option value="18" data-operator="-" data-differ="125.00">5 Tons (- $125.00)</option> 
</select> 

我设法调用功能没有问题,但在活动期间我希望得到数据属性,而不是价值,我不能让它工作,因为预计 下面是我目前的JavaScript

<script> 
function changeprice($this){ 

alert("test");//successfully alerted 
alert($this.data-differ);//no respond 
alert($this.data("operator"));//no respond 
alert($this.data("differ"));//no respond 

}; 
</script> 

请告知

+0

@CasBloem我试过了$($ this).data(“differ”)但它给我undefined – 2014-09-23 13:28:27

回答

1

,你可以这样做:

<script> 
function changeprice(element){ 

var op = $(element).find("option:selected").data("operator") 
var diff = $(element).find("option:selected").data("differ") 

}; 
</script> 
+0

谢谢你的代码工作没有什么变化,我不明白不同但它修复了我的工作 我必须将元素更改为$元素 – 2014-09-23 13:37:38

0

我会假设你正在使用jQuery。如果是这样,您可以访问使用

$($this).data("differ") 

没有jQuery的数据的属性,它可能看起来像

// For newer browsers 
$this.dataset.differ 

// For older IE's, check http://caniuse.com/#feat=dataset where you need to use this solution 
$this.getAttribute("data-differ") 
0

您可以GTE不同的属性和值如下:

$($this).find(':selected').attr('data-operator'); 
$($this).find(':selected').attr('data-differ'); 
$($this).find(':selected').val();