jquery点击(记住OLD VALUE)

Dez*_*igo 7 javascript jquery

当我点击select元素时,我需要记住所选元素的旧值.
此代码适用于FF,CHROME和OPERA,而不是IE.

  1. 记住旧的价值.
  2. 选择选择选项并替换用所选选项记住的旧值!

码:

   $(document).ready(function() {
        $('#viewTableOrders tr td > select').click(function() {
          oldCurrentPath = $(this).val();
          oldId = $(this).attr('title');
          oldCurrentDate = $('#viewTableOrders tr#vagon' + oldId + '> td >input.input_ver1').val();
          dataAjax = {};
       });


        /* event on change path  */
        $('#viewTableOrders tr td > select').change(function() {
            //do something... + old value
        });  
    });
Run Code Online (Sandbox Code Playgroud)

Dr.*_*lle 11

看起来问题是第二次点击(选择新选项)将在更改事件之前触发.

尝试使用焦点而不是单击:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>Old value is:<span></span>
<script>
$(document).ready(
  function()
  {
    $('select').focus(function()
                      {
                          //store old value
                        $(this).data('oldValue',$(this).val());}
                      );
    $('select').change(function()
                       {
                          //do something
                        $('span').text($(this).data('oldValue'));
                          //trigger focus to set new oldValue
                        $(this).trigger('focus');
                       });

  }
);
</script>
Run Code Online (Sandbox Code Playgroud)

(示例还使用了prodigitalson建议的数据)


pro*_*son 5

我会使用data基础设施:

$('#viewTableOrders tr td > select').click(function() {
  var old = {};
  old.currentPath = $(this).val();
  old.id = $(this).attr('title');
  old.currentDate = $('#viewTableOrders tr#vagon' + old.id + '> td >input.input_ver1').val();
  old.ajaxData = {};
  $(this).data('oldData', old);

}).change(function() {
  var oldData = $(this).data('oldData');
  if(typeof old == 'object'){
    // do stuff with oldData
  }      
});
Run Code Online (Sandbox Code Playgroud)