【问题标题】:To make an dynamic element selectable using jQuery使用 jQuery 使动态元素可选
【发布时间】:2013-12-02 09:52:39
【问题描述】:

我正在尝试使第 1 项、第 2 项和第 3 项可选。

HTML:

<div id="container">
   <ul id="outerUL">                   //static 
       <li id="outerLI">              //dynamic
           <ul id="innerUL">          //dynamic
              <li>Item 1</li>         //dynamic
              <li>Item 2</li>         //dynamic
              <li>Item 3</li>         //dynamic
           </ul>
       </li>   
   </ul>
</div>

jQuery:

$("#outerUL").delegate('li','click',function(event) {
        $(this).selectable();
}); 

我无法找出错误。

【问题讨论】:

  • 你使用什么 jQuery 版本?
  • 你不要在 ul 上禁用并启用它
  • 委托已弃用。你应该在上使用
  • @bagonyi --jQuery v1.10.2
  • @DEV 然后您必须将您的.delegate 更改为.on 才能工作。请参阅下面的答案。

标签: javascript jquery dynamic selectable


【解决方案1】:

首先交叉检查您是否拥有正确的jQuery版本并从here下载它

代码的问题

$("#outerUL").delegate('li','click',function(event) {
    $(this).selectable();
});

是吗:

$(this).selectable();

只有当你点击outerUL下的一些li child时才会被调用。因此,您的第一次单击不会选择任何元素,而只会使元素选择就绪。

第二个问题在这个 html sn-p:

 <ul id="outerUL">                   //static 
   <li id="outerLI">              //dynamic
       <ul id="innerUL">          //dynamic
          <li>Item 1</li>         //dynamic
          <li>Item 2</li>         //dynamic
          <li>Item 3</li>         //dynamic
       </ul>
   </li>   

根据您的 javascript 代码,#outerUL 的每个子元素都应该是可选的。因此,第一次单击#outerUL 的任何子级时,将调用$(this).selectable(); 语句,这将使子级outerLI可选。在随后的点击中,将调用 jQuery 的 selectable() 函数并选择完整的 outerLI 元素。

我认为这应该可以解决您的问题:

$(function () {
$("#innerUL").selectable();
});

它只会使#innerUL 的子代可选择。

【讨论】:

  • 谢谢先生让我清楚...这段代码对我来说很好。
【解决方案2】:

试试jQuery on()

$(document).on('click','#outerUL li',function(event) {
    $(this).selectable();
}); 

【讨论】:

    【解决方案3】:

    jQuery API documentation你可以阅读:

    从 jQuery 1.7 开始,.delegate() 已被 .on() 方法取代

    你应该使用 jQuery.on()

    $("#outerUL").on('click', 'li', function(event) {
        $(this).selectable();
    });
    

    【讨论】:

      【解决方案4】:

      试试这个:

      <!doctype html>
      <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>jQuery UI Selectable - Default functionality</title>
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css">
      
        <style>
        #feedback { font-size: 1.4em; }
        #selectable .ui-selecting { background: #FECA40; }
        #selectable .ui-selected { background: #F39814; color: white; }
        #selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
        #selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
        </style>
        <script>
        $(function() {
          $( "#selectable" ).selectable();
        });
        </script>
      </head>
      <body>
      
      <ol id="selectable">
        <li class="ui-widget-content">Item 1</li>
        <li class="ui-widget-content">Item 2</li>
        <li class="ui-widget-content">Item 3</li>
        <li class="ui-widget-content">Item 4</li>
        <li class="ui-widget-content">Item 5</li>
        <li class="ui-widget-content">Item 6</li>
        <li class="ui-widget-content">Item 7</li>
      </ol>
      
      
      </body>
      </html>
      

      Read Here。希望你喜欢!

      【讨论】:

        【解决方案5】:

        你不需要任何功能,只需检查这个FIDDLE

        $(function () {
            $("#selectable").selectable();
            $('#btn').click(function(){
                $('#selectable').append('<li class="ui-widget-content">XXX</li>')
            })
        });
        

        HTML

        <ol id="selectable">
            <li class="ui-widget-content">Item 1</li>
            <li class="ui-widget-content">Item 2</li>
            <li class="ui-widget-content">Item 3</li>
            <li class="ui-widget-content">Item 4</li>
            <li class="ui-widget-content">Item 5</li>
            <li class="ui-widget-content">Item 6</li>
            <li class="ui-widget-content">Item 7</li>
        </ol>
        <input type="button" id="btn" value="ADD" />
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 2017-10-04
          • 2017-02-27
          • 2013-01-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多