我想在每次操作特定DOM元素时运行一个函数。
示例:
我操纵具有类data-expertize
的元素的.milestones-chain
属性:
$(".milestones-chain").data("expertizes","<%= @challenge.root.expertizes %>");
我希望这能自动触发一个功能。
我试过了:
$(document).on('change','.milestones-chain', function() {
alert("trigger my function");
});
但它似乎不起作用。我该怎么办?
答案 0 :(得分:2)
Working jsFiddle Demo (版本1.8.3)
之前 jQuery 1.9,有使用data
的事件处理程序:
setData
- 在设置数据时触发getData
- 每当获取数据时都会被解雇然而,jQuery站点中没有文档,它已从jQuery 1.9中删除。
$(function () {
$('.milestones-chain').on('setData', function (e, k, v) {
alert('[CHANGED] ' + k + ' : ' + v);
});
$('.milestones-chain').data('expertizes', '12345');
});
如果您通过jQuery 1.8运行此代码,则会获得alert
。
通过将data
设置为元素来触发事件。顺便说一句,它不适用于jQuery 1.9和更高版本。
Working jsFiddle Demo (版本1.10.1)
您可以将此功能恢复为新版本的jQuery (我从这个问题中得到它:JQuery 1.9 not triggering setData event)。
(function () {
var olddata = $.fn.data;
$.fn.data = function (key, value) {
olddata.call(this, arguments);
if (value !== undefined) $(this).trigger('setData', [key, value]);
};
})();
只需将其添加到脚本的第一行即可。