jquery 可选择插件选择第一级子级,而不是子级的子级

发布于 2024-12-06 05:13:23 字数 538 浏览 1 评论 0原文

   <ol id="selectable">
    <li class="ui-widget-content">
           <div><input type="checkbox" /></div>
           <div>Item1</div>
           <div>Khanput</div>
           <div>1/2/3</div>
           <div>15:03:16</div>
           <div>--------</div>
           <div>23m</div>
           <div>Chakwal</div>
       </li>
   </ol>

我只想选择“li”元素而不是“div”,但它会选择所有元素。 我尝试了一些方法,但没有成功。

   <ol id="selectable">
    <li class="ui-widget-content">
           <div><input type="checkbox" /></div>
           <div>Item1</div>
           <div>Khanput</div>
           <div>1/2/3</div>
           <div>15:03:16</div>
           <div>--------</div>
           <div>23m</div>
           <div>Chakwal</div>
       </li>
   </ol>

I just want to select the 'li' element not the 'div' but it selects them all.
I have tried a few things but they did not work out.

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

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

发布评论

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

评论(2

绅刃 2024-12-13 05:13:23

如果您使

  • 元素可选择,那么当单击
  • 时,其中的内容也会变为“选定”。
  • 但就 jQuery UI 而言,实际上只有

  • 被“选中”。您可以看到这一点,因为您的
  • 在被选中时将被赋予一个 ui-selected 类;相反,其中的内容被赋予 ui-selectee 类。
  • If you make the <li> element selectable it stands to reason that the content inside it would also become 'selected' when the <li> is clicked.

    As far as jQuery UI is concerned though, only the <li> is actually 'selected'. You can see this as your <li> will be given a class of ui-selected when it's selected; the content within, conversely, is given the ui-selectee class.

    橘味果▽酱 2024-12-13 05:13:23

    您可以添加此自定义插件,

    $.widget("xim.singleSelectable", {
        options: {
            select: null
        },
        _create: function () {
            var self = this;
            this.element.addClass('ui-selectable');
            this.element.delegate('li', 'click', function (e) {
                self.element.find('>li').removeClass('ui-selected');
                $(this).addClass('ui-selected');
    
                if ($.isFunction(self.options.select)) {
                    self.options.select.apply(self.element, [e, this]);
                }
    
            });
        },
        selected: function () {
            return this.element.find('li.ui-selected');
        },
        destroy: function () {
            $.Widget.prototype.destroy.apply(this, arguments); // default destroy
        }
    });
    

    然后您的代码将是

    $( "#selectable" ).selectable({         
                stop: function() {                
                    $( "li.ui-selected", this ).each(function() {
                        var index = $( "#selectable li" ).index( this );                   
                        alert(index);                                       
                    });                
                }                        
            });
    

    我在这里找到的解决方案
    如何防止 jQuery UI Selectable 插件中的多重选择

    You can add this custom plugin

    $.widget("xim.singleSelectable", {
        options: {
            select: null
        },
        _create: function () {
            var self = this;
            this.element.addClass('ui-selectable');
            this.element.delegate('li', 'click', function (e) {
                self.element.find('>li').removeClass('ui-selected');
                $(this).addClass('ui-selected');
    
                if ($.isFunction(self.options.select)) {
                    self.options.select.apply(self.element, [e, this]);
                }
    
            });
        },
        selected: function () {
            return this.element.find('li.ui-selected');
        },
        destroy: function () {
            $.Widget.prototype.destroy.apply(this, arguments); // default destroy
        }
    });
    

    then your code will be

    $( "#selectable" ).selectable({         
                stop: function() {                
                    $( "li.ui-selected", this ).each(function() {
                        var index = $( "#selectable li" ).index( this );                   
                        alert(index);                                       
                    });                
                }                        
            });
    

    I found the solution here
    How to prevent multiple selection in jQuery UI Selectable plugin

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