javascript - 检测数据属性何时发生变化

标签 javascript jquery

我目前正在开发一个微型网站,我想根据父容器数据属性是否发生更改来交换内容。

<div id="app" data-page="1"></div>

接下来我有一个按钮,用于获取数据属性,然后在单击时递增。

var page = +$('#app').attr('data-page');
$('#button__page-change').on('click', function() {
  page = page + 1;
  $('#app').attr('data-page', page);
});

现在的下一步是检测该页面何时发生更改。我正在沿着 switch 语句的思路思考。

switch (page) {
  case 2:
    console.log('page: ', page);
  break;
  case 3:
    console.log('page: ', page);
  break;
  default: 
   console.log('switch statement does not appear to be working');
  break;
}

该开关似乎不满足任何条件,因此将进入默认情况。但话虽如此,我试图将其放入 on-change 函数中。但我似乎没有任何运气,因为控制台没有记录任何内容。

任何意见都将不胜感激。预先感谢您。

最佳答案

好吧,如果你只能使用$.data()函数,你可以拦截它的执行,如下所示:

  • 获取当前 jQuery 的 data 函数。
  • 执行原生 jQuery 的 data 函数。
  • 获取结果。
  • 执行页面检测逻辑。
  • 从 jQuery 的 data 函数返回结果。

var page = +$('#app').data('page');

var dataFn = $.fn.data;
$.fn.data = function(value, data) {
  var result = dataFn.call(this, value);
  executePageDetection(value, data);
  return result;
};

$('#button__page-change').on('click', function() {
  page = page + 1;
  $('#app').data('page', page);
});

var executePageDetection = function() {
  switch (page) {
    case 2:
      console.log('page: ', page);
      break;
    case 3:
      console.log('page: ', page);
      break;
    default:
      console.log('switch statement does not appear to be working');
      break;
  }
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="app" data-page="1"></div>

<button id='button__page-change'>Click me</button>

关于javascript - 检测数据属性何时发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48713847/

相关文章:

javascript - AngularJS 中的全局后退/下一步按钮

javascript - React-Redux 子组件中的异步数据

javascript - 解析 window.location.pathname 并返回 number of/s 的正则表达式

javascript - 类型错误 : Cannot read property 'args' when creating spy with Jasmine

javascript - Jquery .parents 定位问题

javascript - 引入jquery时变量被清空

asp.net - 即使在 postback-jquery 之后也为元素应用 Css

javascript - 从用户生成的 li 列表中的 ahref 链接创建数组

javascript - 从某些链接到达时执行 jQuery

javascript - 使用 jquery 添加不适用于 html5 视频播放器的类