javascript - 在 Jquery 中为基于 Knack 构建的应用程序创建循环

标签 javascript jquery loops

我正在尝试使用 jquery 编写一个 js 脚本来更改在名为 Knack 的平台中创建的一个应用程序的 UI 语言。问题是(也许是因为 Knack 使用了我不完全理解的事件处理程序,或者只是因为我的 JS 技能不足)当我单击 UI 中的某个位置时,语言会恢复为原始语言。我想知道这与循环有关吗?即,如何强制循环针对页面中的每个事件再次运行?

谢谢!

这是我的脚本:

// Translation script ----> Start

$(document).on('knack-view-render.any', function() {
// var time = $(".view_22 kn-rich_text kn-view");
// add time to logo section $("#knack-logo").append($("time"));

$(".field_19 .table-fixed-label span").html("    Tender");                   //english default
$(".field_45 .table-fixed-label span").html("        Language");         //english default
$(".field_19 .kn-label span").html("Tender");                                               //english default
$(".field_45 .kn-label span").html("Language");                                         //english default
$(".table-keyword-search a").html("Search");                                            //english default
$(".kn-form-reload").html("Reload Form");                                               //english default
$(".kn-message.success").html("<div>Form successfully submitted.</div><br />");     //english default
$(".kn-message.error p").html("<p>Name is required!</p><br />");
$(".table-keyword-search input").attr("placeholder", "Search by Keyword");          //english default
$(".kn-submit input[type=submit]").attr("value", "Submit");                         //english default
$('.kn-add-filter').text('add filter');                                             //english default
});
$(document).on('knack-view-render.any', function(event, page, data, view, record, scene) {

$("#view_26 select[id=chlang]").change(function() {                                         //html document in view_26 with the <select> options
var selectedValue = $(this).val();
if (selectedValue  === 'en') {
$(".field_19 .table-fixed-label span").html("&nbsp;&nbsp;&nbsp; Tender");                       //english default
$(".field_45 .table-fixed-label span").html("&nbsp;&nbsp;&nbsp; Language");                     //english default
$(".field_19 .kn-label span").html("Tender");                                   //english default
$(".field_45 .kn-label span").html("Language");                             //english default
$(".table-keyword-search a").html("Search");                                            //english default
$(".kn-form-reload").html("Reload Form");                                               //english default
$(".kn-message.success").html("<div>Form successfully submitted.</div><br />");     //english default
$(".kn-message.error strong").html("<div>Name is required!</div><br />");

$(".table-keyword-search input").attr("placeholder", "Search by Keyword");          //english default
$(".kn-submit input[type=submit]").attr("value", "Submit");                         //english default
$('.kn-add-filter').text('add filter');                                             //english default
} 
else if (selectedValue  === 'fr'){
$(".field_19 .table-fixed-label span").html("&nbsp;&nbsp;&nbsp; Appel d\' offre");              //replace field number and field name in desired language
$(".field_45 .table-fixed-label span").html("&nbsp;&nbsp;&nbsp; Langue");                           //replace field number and field name in desired language
$(".field_19 .kn-label span").html("Appel d' offre");                           //replace field number and field name in desired language
$(".field_45 .kn-label span").html("Idiome");                                   //replace field number and field name in desired language
$(".table-keyword-search a").html("Rechercher");                                        //replace with "Search" name in desired language
$(".kn-form-reload").html("Recharger Formulaire");                                  //replace with "Reload Form" name in desired language
$(".kn-message.success").html("<div>Soumis avec Succès.</div><br />");              //replace with "Form successfully submitted."


$(".table-keyword-search input").attr("placeholder", "recherche par mots-clés");        //replace with "Search by Keyword" name in desired language
$(".kn-submit input[type=submit]").attr("value", "Enregistrer");                        //replace with "Submit" name in desired language
$('.kn-add-filter').text('ajouter filtre');                                         //replace with "add filter" name in desired language 
}
});
});

// Translation script <---- End

最佳答案

如果您需要一个函数部分代码触发器与任何事件,您可以做一些事情像这样,只需将必要的事件添加到 var events = 'some event event事件悬停等...'

$(document).ready(function() {

  function translateDoc(){
    $('h1').text('Título');
    $('input').attr('placeholder', 'Algún texto');
    $('button').text('Botón');
    $('select option:selected').text('Selector');
  }

  var events = 'mousemove click change';

  $(document).on(events, '.foo', function(event) {
    // console.log(event.type); // mousemove, click, change, etc...
    translateDoc();
  });

});
.foo {
  height: 200px;
  text-align: center;
  border: 1px solid black;
  padding: 5px 5px 5px 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo">
  <h1>Title</h1>
  <input type="text" placeholder="Some Text" /><br /><br />
  <button type="button">Button</button><br /><br />
  <select>
    <option>Select</option>
    <option>Option</option>
  </select>
</div>

关于javascript - 在 Jquery 中为基于 Knack 构建的应用程序创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045432/

相关文章:

jquery - 初始化多页面 jQuery Mobile 的最佳方式

loops - 使用 Stata 中变量的唯一观测值创建向量

javascript - Angular 移动不精确

javascript - 我是否应该像客户端验证一样在服务器端复制客户端的表单验证?

javascript - 从 Kotlin 调用 JavaScript

javascript - 如何设置当前小时下拉列表的默认选择?

jquery - Bootstrap 颜色选择器不起作用

jquery - Magnific Popup Ajax 解析 div

java - java新手,while循环?

c - 在循环中接收 UDP 数据包会使 linux 内核崩溃