使用 mootools 多次替换元素名称

发布于 2024-12-09 06:58:19 字数 504 浏览 1 评论 0原文

moo 中是否有任何等效项可以替换多个元素 id 名称

我有这个

    $$('myelement').each(function(el){ 
            var get_all_labels = el.getElements('label');/
            var get_label_id = get_all_labels.getProperty('id');
            el.addClass(get_label_id);

        });

,但 mu 标签 (labael_name) 返回附加后缀,例如 -elem,, 并且我需要删除 <来自新创建的父类名称的strong>-elem,,。我测试了替换,但可能在错误的位置,它返回replace is not a function,还测试了js的自定义string_replace,但我没有任何运气,请任何提示。谢谢!

is there any equivalent in moo that can replace multiple element id names

i have this

    $('myelement').each(function(el){ 
            var get_all_labels = el.getElements('label');/
            var get_label_id = get_all_labels.getProperty('id');
            el.addClass(get_label_id);

        });

but mu labels (labael_name) return additional suffix like -elem,, and I need to remove -elem,, from the new created parent class name . I tested replace but probably in the wrong spot , it returns replace is not a function , also tested custom string_replace for js but im not having any luck with it , please any hint. Thnx!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺深海 2024-12-16 06:58:19

这有点错误。

var get_all_labels = el.getElements('label'); - 返回一个集合

var get_label_id = get_all_labels.getProperty('id'); - 返回 ids 数组。

因此,如果您有一个标签,它将:

[labelObject#someid-elem] 然后返回 ["someid-elem"]

问题是,element.addClass 需要单个字符串,而不是字符串数组,但您可以使用 array.join 来解决这个问题。

如果你确实有超过 1 个标签并且需要将它们全部作为类添加到你正在循环的 el 中,你可以这样做,

$('myelement').each(function(el) {
    var get_all_labels = el.getElements('label');

    // get all ids and replace them... use .get for 1.2+ or .getProperty for 1.11
    var get_label_ids = get_all_labels.map(function(label) {
        return label.getProperty("id").replace("-elem", "");
    });

    // add to parent element.
    el.addClass(get_label_ids.join(" "));
    console.log(el);
});

如果这不是预期的行为并且你实际上只有一个标签,那么就这样做

$('myelement').each(function(el) {
    var id = el.getElement('label').get("id").replace("-elem", "")
    el.addClass(id);
    console.log(el);
});

this is somewhat wrong.

var get_all_labels = el.getElements('label'); - returns a collection

var get_label_id = get_all_labels.getProperty('id'); - returns an array of ids.

so if you have a single label, it will go:

[labelObject#someid-elem] which will then return ["someid-elem"]

the problem is, element.addClass requires a single string, not an array of strings but you can use array.join to work around that.

if you do have more than 1 label and need to add all of them as classes to the el you are looping, you can do

$('myelement').each(function(el) {
    var get_all_labels = el.getElements('label');

    // get all ids and replace them... use .get for 1.2+ or .getProperty for 1.11
    var get_label_ids = get_all_labels.map(function(label) {
        return label.getProperty("id").replace("-elem", "");
    });

    // add to parent element.
    el.addClass(get_label_ids.join(" "));
    console.log(el);
});

if this is not the intended behavior and you actually have a single label, then just do

$('myelement').each(function(el) {
    var id = el.getElement('label').get("id").replace("-elem", "")
    el.addClass(id);
    console.log(el);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文