jquery UI 发送从 ui.item 对象中提取的字符串时出现问题

发布于 2024-09-27 03:34:47 字数 784 浏览 4 评论 0原文

我有 2 个可排序、相互关联的图片列表:相册和收藏夹。
当我从相册中拖动项目时 ->收藏夹 我想检查它是否已在收藏夹列表中。

  • 如果是,请不要接受它(也许禁用排序或其他什么?)
  • 如果不是,请将项目克隆回相册中的原始索引(连接的可排序列表仅移动项目,因此这类似于复制)
  • 我有一个功能可以检查图片是否在收藏夹列表中:

    function isInFavorites(url) {
        return $(".favorites li img[src*='" + url + "']").length > 0;
    }
    

    此功能按预期工作...
    但是,当我使用 ui.item 提取 scr attr 并将参数传递给该函数时,我总是得到一个真正的布尔值?

    var itemSrc = ui.item.find("img").attr("src");
    if (isInFavorites(itemSrc)) { alert('item allready in favorites, do not accept'); } 
    else { alert('OK, now clone back to album'); }
    

    我一直在努力解决这个问题,希望得到一些帮助!
    JS Fiddle 可以在这里找到: http://jsfiddle.net/tunafish/CTps3/

    干杯!

    I have 2 sortable, connected lists with pics: Album and Favorites.
    When I drag and item from Album -> Favorites I want to check if it's already in the Favorites list.

  • If it is, do NOT accept it (maybe disable sorting or something?)
  • If it is not, clone the item back to the original index in Albums (connected sortable lists do only move items, so this mimics copying)
  • I have a function that checks if the pics are in the Favorites list:

    function isInFavorites(url) {
        return $(".favorites li img[src*='" + url + "']").length > 0;
    }
    

    This function works like expected...
    However when I extract the scr attr with ui.item and pass the argument to this function I always get a true boolean??

    var itemSrc = ui.item.find("img").attr("src");
    if (isInFavorites(itemSrc)) { alert('item allready in favorites, do not accept'); } 
    else { alert('OK, now clone back to album'); }
    

    I have been banging my head way to long on this and would appreciate some help!
    A JS Fiddle can be found here: http://jsfiddle.net/tunafish/CTps3/

    Cheers!

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

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

    发布评论

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

    评论(1

    且行且努力 2024-10-04 03:34:47

    不确定这是否是处理逻辑的最佳方法,但事件触发的顺序是问题的根源

    function isInFavorites(url) {
        return $(".favorites li img[src*='" + url + "']").length > 0;
    }
    

    此事件在项目移动后运行。如果它是重复项,则长度将为 2,但长度始终为 1,因为您刚刚将该项目移动到下方列表中。

    快速解决方法是测试 $(".favorites li img[src*='" + url + "']").length > 1

    Not sure if this is the best way to process the logic but the order the events are firing is the source of your problem

    function isInFavorites(url) {
        return $(".favorites li img[src*='" + url + "']").length > 0;
    }
    

    This event runs AFTER the item has been moved. if it is a duplicate you will have length 2, but you will always have length 1 because you just moved the item into the lower list.

    quick fix is to test for $(".favorites li img[src*='" + url + "']").length > 1

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文