Javascript 将代码从jquery转换为prototype或dojo

Javascript 将代码从jquery转换为prototype或dojo,javascript,jquery,dojo,prototypejs,Javascript,Jquery,Dojo,Prototypejs,如果你必须这么做 function addRemoveItemNS() { var $newLi = $('<li class="special">special and new <button class="addone">I am new</button> <button class="removeme">remove me</button></li>'); $('#list9 li.special') .fin

如果你必须这么做

function addRemoveItemNS() {
  var $newLi = $('<li class="special">special and new <button class="addone">I am new</button> <button class="removeme">remove me</button></li>');
$('#list9 li.special')
  .find('button.addone')
 .unbind('click.addit')
 .bind('click.addit', function() {
   $(this).parent().after($newLi);
   addRemoveItemNS();
  })
  .end()
  .find('button.removeme')
  .unbind('click.removeit')
  .bind('click.removeit', function() {
 $(this).parent().remove();
  });
}
$(document).ready(function() {
  addRemoveItemNS();
});
函数addRemoveItems(){ var$newLi=$('li class=“special”>special and new I am new remove me); $('list9 li.special') .find('button.addone')) .unbind('click.addit') .bind('click.addit',function(){ $(this).parent()在($newLi)之后; addRemoveItems(); }) (完) .find('button.removeme') .unbind('click.removit') .bind('click.removeit',function(){ $(this.parent().remove(); }); } $(文档).ready(函数(){ addRemoveItems(); });
…使用prototype或dojo而不是jquery,您将如何实现它?

好吧,因为您的代码中没有事件。。。或者AJAX


只是一个用词不当的愚蠢请求。

好吧,因为代码中没有事件。。。或者AJAX


这只是一个用词不当的愚蠢请求。

以下是如何使用Dojo主干代码(或Dojo 1.4一旦发布)来实现这一点。主干代码添加了对end()的支持,以更好地匹配原始代码。您可以通过将dojo.query(inserted)保存为变量并在两个单独的语句中调用.query()以获得相同的效果来解决这个问题,然后可以使用dojo 1.3

function addRemoveItemNS() {
  var html = '<li class="special">special and new <button class="addone">I am new</button> <button class="removeme">remove me</button></li>';
  var inserted = dojo.place(html, "list9");
  dojo.query(inserted)
    .query('button.addone')
      .onclick(function(evt){
        addRemoveItemNS()
      })
    .end()
    .query('button.removeme')
      .onclick(function(evt){
        //Use normal DOM API for parentNode to get reference.
        dojo.destroy(evt.target.parentNode);
      });
}

dojo.addOnLoad(function(){
  //First create #list9 node? Missing from original code.
  dojo.place('<ul id="list9"></ul>', dojo.body());
  addRemoveItemNS();
});
函数addRemoveItems(){ var html='
  • 特殊和新的“我是新的”“删除我”
  • ; 插入的var=dojo.place(html,“list9”); dojo.query(插入) .query('button.addone') .onclick(函数(evt){ addRemoveItems() }) (完) .query('button.removeme') .onclick(函数(evt){ //使用parentNode的普通DOM API获取引用。 destroy(evt.target.parentNode); }); } dojo.addOnLoad(函数(){ //原始代码中缺少第一个创建#list9节点。 dojo.place(“”,dojo.body()); addRemoveItems(); }); 关于代码的一些注释:

    • 通过使用HTML字符串,然后使用dojo.placeing,则无需调用“unbind”
    • Dojo不支持绑定到DOM节点上事件的自定义名称,只支持标准DOM事件名称,如onclick、onfocus等。。支持
    • Dojo默认情况下不会使被单击的DOM节点成为单击处理程序中的“this”引用,因为Dojo支持将“this”参数作为其onclick函数的一部分。这就是为什么在移除按钮单击操作中使用evt.target

    以下是如何使用Dojo主干代码(或Dojo 1.4发布后的代码)实现此功能。主干代码添加了对end()的支持,以更好地匹配原始代码。您可以通过将dojo.query(inserted)保存为变量并在两个单独的语句中调用.query()以获得相同的效果来解决这个问题,然后可以使用dojo 1.3

    function addRemoveItemNS() {
      var html = '<li class="special">special and new <button class="addone">I am new</button> <button class="removeme">remove me</button></li>';
      var inserted = dojo.place(html, "list9");
      dojo.query(inserted)
        .query('button.addone')
          .onclick(function(evt){
            addRemoveItemNS()
          })
        .end()
        .query('button.removeme')
          .onclick(function(evt){
            //Use normal DOM API for parentNode to get reference.
            dojo.destroy(evt.target.parentNode);
          });
    }
    
    dojo.addOnLoad(function(){
      //First create #list9 node? Missing from original code.
      dojo.place('<ul id="list9"></ul>', dojo.body());
      addRemoveItemNS();
    });
    
    函数addRemoveItems(){ var html='
  • 特殊和新的“我是新的”“删除我”
  • ; 插入的var=dojo.place(html,“list9”); dojo.query(插入) .query('button.addone') .onclick(函数(evt){ addRemoveItems() }) (完) .query('button.removeme') .onclick(函数(evt){ //使用parentNode的普通DOM API获取引用。 destroy(evt.target.parentNode); }); } dojo.addOnLoad(函数(){ //原始代码中缺少第一个创建#list9节点。 dojo.place(“”,dojo.body()); addRemoveItems(); }); 关于代码的一些注释:

    • 通过使用HTML字符串,然后使用dojo.placeing,则无需调用“unbind”
    • Dojo不支持绑定到DOM节点上事件的自定义名称,只支持标准DOM事件名称,如onclick、onfocus等。。支持
    • Dojo默认情况下不会使被单击的DOM节点成为单击处理程序中的“this”引用,因为Dojo支持将“this”参数作为其onclick函数的一部分。这就是为什么在移除按钮单击操作中使用evt.target

    您可能需要编辑此内容-您的标题不以任何方式反映您的问题内容。我同意。编辑(更改标题)将帮助您获得一个好答案。您可能希望编辑此内容-您的标题不会以任何方式反映问题的内容我同意。编辑(更改标题)将帮助您获得一个好答案。