2013-01-22 3 views
0

다음은 jQuery UI의 선택 가능한 플러그인 코드입니다. 이 코드를 사용하면 올가미없이 키보드없이 하나 이상의 선택 가능한 객체를 마우스로 선택할 수 있습니다. 내가 선택할 때 console.log 메시지가 파이어 버그에 나타납니다. 또한 하나 이상의 선택 가능 항목을 선택하고 그 중 일부 선택을 취소 할 때도 나타납니다.jQuery ui selectable : 요소가 하나만 선택된 경우 함수가 선택 취소에 반응하지 않습니다.

선택한 요소가 하나 뿐이며 선택을 취소하면 아무 일도 일어나지 않습니다. 그 상황에서도 console.log 메시지가 필요합니다.

는 어떤 도움을 귀하의 문제는 거기 선택하기 때문에 선택한 각 항목에 대한 CONSOLE.LOG 기능 화재는 ".ui가 선택한"이다

<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 type="text/javascript"> 
    $(function() { 
     $("#selectable").bind("mousedown", function(e) { 
      e.metaKey = true; 
     }).selectable({ 
      stop: function() { 
       var result = $("#select-result").empty(); 
       $(".ui-selected", this).each(function() { 
        var index = $("#selectable li").index(this); 
        result.append(" #" + (index + 1)); 

            console.log("test") 
          }); 
      } 
     }); 
    }); 
</script> 

<p id="feedback"> 
    <span>You've selected:</span> <span id="select-result">none</span>. 
</p> 

<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> 
</ol> 

답변

0

감사. 마지막 선택을 취소하면 아무 것도 선택되지 않으므로 기능이 전혀 실행되지 않습니다.

은이 같은 선택되지 않은 항목의 각각 다른 기능을 결합 할 수 있습니다

$(function() { 
    $("#selectable").bind("mousedown", function(e) { 
     e.metaKey = true; 
    }).selectable({ 
     stop: function() { 
      var result = $("#select-result").empty(); 

      $(".ui-selected", this).each(function() { 
       var index = $("#selectable li").index(this); 
       result.append(" #" + (index + 1)); 
       console.log("selected"); 
      }); 

      $(".ui-selectee", this).each(function() { 
       var index = $("#selectable li").index(this); 
       result.append(" #" + (index + 1)); 
       console.log("not selected"); 
      }); 
     } 
    }); 
}); 

당신은 단지 선택하거나 선택되지 않은 각 항목에 대한 기능을 발사하여 더욱 동적으로 만들 수 있습니다. 이를 위해 선택할 수있는 선택 이벤트와 선택되지 않은 이벤트를 사용할 수 있습니다. 이 기능은 정지 및 화재와 동시에 발동되며, 사용하는 항목에 따라 방금 선택한 항목이나 선택하지 않은 항목마다 실행됩니다. 따라서 예 :

$(function() { 
    $("#selectable").bind("mousedown", function(e) { 
     e.metaKey = true; 
    }).selectable({ 
     stop: function() { 
      // fires at stop 
      var result = $("#select-result").empty(); 
     }, 
     selected: function(event, obj) { 
      // this function will fire for each item that was just selected 
      // obj is the selected object 
      console.log("selected"); 
      console.log(obj); 

      // Not sure if this bit will work, could try this instead of obj 
      var index = $("#selectable li").index(obj); 
      $('#result').append(" #" + (index + 1)); 

     }, 
     unselected: function(event, obj) { 
      // this function will fire for each item that was just deselected 
      // obj is the unselected object 

      console.log("deselected"); 
      console.log(obj); 

      // Not sure if this bit will work 
      var index = $("#selectable li").index(obj); 
      $('#result #" + (index + 1)').remove(); 
     } 
    }); 
});