gpt4 book ai didi

javascript - 将代码从 jquery 转换为原型(prototype)或 dojo

转载 作者:行者123 更新时间:2023-11-30 10:56:25 24 4
gpt4 key购买 nike

如果你必须这样做......

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();
});

...用 prototype 或 dojo 而不是 jquery,你会怎么做?

最佳答案

下面是如何使用 Dojo 主干代码(或 Dojo 1.4 发布后)来完成此操作。 trunk 代码添加了对 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();
});

关于代码的一些说明:

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

关于javascript - 将代码从 jquery 转换为原型(prototype)或 dojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1042161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com