Javascript 调用函数jquery中的数据属性

Javascript 调用函数jquery中的数据属性,javascript,jquery,custom-data-attribute,Javascript,Jquery,Custom Data Attribute,我有一些下拉列表如下: <select name="qty" class="mb10" onchange="test()" data-plan-type="offer" data-plan-id="7395" data-plan-day="2210009"> <option value="0">0 rooms</option> <option value="1">1 rooms</option> <opti

我有一些下拉列表如下:

<select name="qty" class="mb10" onchange="test()" data-plan-type="offer" data-plan-id="7395" data-plan-day="2210009">
    <option value="0">0 rooms</option>
    <option value="1">1 rooms</option>
    <option value="2">2 rooms</option>
    <option value="3">3 rooms</option>
    <option value="4">4 rooms</option>
</select>

问题在于
onchange
事件,我无法在我的
中调用数据属性。我如何在函数中调用该数据属性?

您的代码不起作用,因为关键字
不引用选择元素上下文,而是引用文档

你可以

1) 将单击元素的对象作为函数中的参数传递

在js中:

function test($selectElement)
{
var this_plan_type = $selectElement.data('plan-type');
var this_plan_id = $selectElement.data('plan-id');
var this_plan_day = $selectElement.data('plan-day');

alert(this_plan_type);
}
2) 通过测试方法中的选择器获取元素:

 function test()
{
var $selectElement = $("select.mb10")
var this_plan_type = $selectElement.data('plan-type');
var this_plan_id =  $selectElement.data('plan-id');
var this_plan_day = $selectElement.data('plan-day');

alert(this_plan_type);
}
3) 使用jquery将事件附加到选择元素:

$(".mb10").change(function(){
   var $selectElement = $(this);
   var this_plan_type =$selectElement.data('plan-type');
   var this_plan_id = $selectElement.data('plan-id');
   var this_plan_day = $selectElement.data('plan-day');
   alert(this_plan_type);
});

您的代码不起作用,因为关键字
不引用选择元素上下文,而是引用文档

你可以

1) 将单击元素的对象作为函数中的参数传递

在js中:

function test($selectElement)
{
var this_plan_type = $selectElement.data('plan-type');
var this_plan_id = $selectElement.data('plan-id');
var this_plan_day = $selectElement.data('plan-day');

alert(this_plan_type);
}
2) 通过测试方法中的选择器获取元素:

 function test()
{
var $selectElement = $("select.mb10")
var this_plan_type = $selectElement.data('plan-type');
var this_plan_id =  $selectElement.data('plan-id');
var this_plan_day = $selectElement.data('plan-day');

alert(this_plan_type);
}
3) 使用jquery将事件附加到选择元素:

$(".mb10").change(function(){
   var $selectElement = $(this);
   var this_plan_type =$selectElement.data('plan-type');
   var this_plan_id = $selectElement.data('plan-id');
   var this_plan_day = $selectElement.data('plan-day');
   alert(this_plan_type);
});
你可以用

bind()
方法创建一个新函数,该函数在调用时将其
this
关键字设置为提供的值


0个房间
1个房间
2个房间
3个房间
4个房间
您可以使用

bind()
方法创建一个新函数,该函数在调用时将其
this
关键字设置为提供的值


0个房间
1个房间
2个房间
3个房间
4个房间
作为参数传递给
test()
,并使用该参数而不是
(在您的案例中,它绑定到
窗口
对象)

但老实说,您根本不应该使用
onchange
属性。jQuery的方法应该绝对能够完成这项工作,即使在IE11中也是如此

功能测试(mySelect)
{
var this_plan_type=$(mySelect.data('plan-type');
var this_plan_id=$(mySelect.data('plan-id');
var this_plan_day=$(mySelect.data('plan-day');
警报(此计划类型);
}

0个房间
1个房间
2个房间
3个房间
4个房间
作为参数传递给
test()
,并使用该参数而不是
(在您的案例中,它绑定到
窗口
对象)

但老实说,您根本不应该使用
onchange
属性。jQuery的方法应该绝对能够完成这项工作,即使在IE11中也是如此

功能测试(mySelect)
{
var this_plan_type=$(mySelect.data('plan-type');
var this_plan_id=$(mySelect.data('plan-id');
var this_plan_day=$(mySelect.data('plan-day');
警报(此计划类型);
}

0个房间
1个房间
2个房间
3个房间
4个房间

您需要将元素的对象作为parameter@MilindAnantwar有其他方法吗?使用jquery绑定变更事件我怎么做?也许你有一些例子@用于选择和使用$('#selectQTY').data('plan-type')的MilindantWarput id;您需要将元素的对象作为parameter@MilindAnantwar有其他方法吗?使用jquery绑定变更事件我怎么做?也许你有一些例子@用于选择和使用$('#selectQTY').data('plan-type')的MilindantWarput id;哇!有趣…我不知道这个sytax:)它正在工作,@milindiantwar答案也在工作。谢谢你们俩,哇。有趣…我不知道这个sytax:)它正在工作,@milindiantwar答案也在工作。谢谢你们两位。