使用jQuery选择动态元素

时间:2013-12-02 09:52:39

标签: javascript jquery dynamic selectable

我正在努力使第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();
}); 

我无法找出错误。

5 个答案:

答案 0 :(得分:1)

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

下载

代码问题

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

是:

$(this).selectable();
只有当您点击li child下的某些outerUL时才会调用

。因此,您的第一次点击不会选择任何元素,而只会让元素选择就绪。

第二个问题出现在这个html片段中:

 <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的孩子可以选择。

答案 1 :(得分:0)

尝试jQuery on()

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

答案 2 :(得分:0)

jQuery API documentation中,您可以阅读:

  

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

您应该使用 jQuery.on()

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

答案 3 :(得分:0)

试试这个:

<!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。希望你喜欢!

答案 4 :(得分:0)

你不需要任何功能只需选中 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" />