将Prototype代码转换为Jquery版本

时间:2011-11-19 16:45:18

标签: javascript jquery ruby-on-rails prototypejs

我是大家, 我正在研究SaaS应用程序,由于一些额外的插件集成,我需要使用Jquery而不是Prototype。我的代码与Prototype的魅力不再用Jquery运行了,我不习惯在这个框架中写... 是否有人帮助我“翻译”这个: 非常感谢你的帮助。

var rates = new Array();

<% for tva_rate in @tva_rates -%>

  rates.push(new Array(<%= tva_rate.id %>, '<%=h tva_rate.taux %>', '<%=h tva_rate.compte_id %>' ));

<% end -%>

function tvaSelected() {


  tva_id = $('journal_tva_id').getValue();

  show = 1;
  if (tva_id > 0){
    rates.each(function(rate) {
        if (rate[0] == tva_id) {
            $('journal_taux').setValue(rate[1]);
            $('journal_compte_tva').setValue(rate[2]);
            show = 2;
        }
    });
}

  if (show == 1) {
    $('tva_taux_field').hide();
  } else {
    $('tva_taux_field').show();
  }
}
document.observe('dom:loaded', function() {
  tvaSelected();
  $('journal_tva_id').observe('change', tvaSelected);
});

1 个答案:

答案 0 :(得分:0)

我假设你做了一个完整的转换,并没有尝试同时使用jQuery和Prototype(可以这样做)。

试试这个:

var rates = new Array();

<% for tva_rate in @tva_rates -%>

  rates.push(new Array(<%= tva_rate.id %>, '<%=h tva_rate.taux %>', '<%=h tva_rate.compte_id %>' ));

<% end -%>

function tvaSelected() {

  tva_id = $('#journal_tva_id').val(); // use id selector and val()

  show = 1;
  if (tva_id > 0){
    $.each(rates,function(idx,rate) {
        if (rate[0] == tva_id) {
            $('#journal_taux').val(rate[1]); // use id selector and val()
            $('#journal_compte_tva').val(rate[2]); // use id selector and val()
            show = 2;
        }
    });
}

  if (show == 1) {
    $('#tva_taux_field').hide(); // use id selector
  } else {
    $('#tva_taux_field').show(); // use id selector
  }
}

$(function() { // use short-hand for document.ready() instead of onload event observer
  tvaSelected();
  $('#journal_tva_id').change(tvaSelected); //use id and set up change handler
});