2011-11-20 5 views
0

Jquery UI - sortable 구성 요소에 문제가 있습니다. 문제 설명 :Jquery UI - Sortable [Portlet] - button double click

  • 클릭 단추 1에 ->
  • 드래그 포틀릿이 다른 컬럼에 Button1을 포함하고 button1을 클릭 "경고"결과 -> 클릭 기능으로 표시 "경고", "경고"(조치 결과 회 이벤트 당 triggerd) JQUERY UI 웹 페이지에서

간단한 코드 (변형 포틀릿 예)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Sortable - Portlets</title> 
    <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css"> 
    <script src="../../jquery-1.6.2.js"></script> 
    <script src="../../ui/jquery.ui.core.js"></script> 
    <script src="../../ui/jquery.ui.widget.js"></script> 
    <script src="../../ui/jquery.ui.mouse.js"></script> 
    <script src="../../ui/jquery.ui.sortable.js"></script> 
    <script src="../../ui/jquery.ui.button.js"></script> 
    <link rel="stylesheet" href="../demos.css"> 
    <style> 
    .column { width: 170px; float: left; padding-bottom: 100px; } 
    .portlet { margin: 0 1em 1em 0; } 
    .portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; } 
    .portlet-header .ui-icon { float: right; } 
    .portlet-content { padding: 0.4em; } 
    .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; } 
    .ui-sortable-placeholder * { visibility: hidden; } 
    </style> 
    <script> 
    $(function() { 
     $(".column").sortable({ 
      connectWith: ".column" 
     }); 

     $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") 
      .find(".portlet-header") 
       .addClass("ui-widget-header ui-corner-all") 
       .prepend("<span class='ui-icon ui-icon-minusthick'></span>") 
       .end() 
      .find(".portlet-content"); 

     $(".portlet-header .ui-icon").click(function() { 
      $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); 
      $(this).parents(".portlet:first").find(".portlet-content").toggle(); 
     }); 

     $(".column").disableSelection(); 
    }); 
    </script> 
</head> 
<body> 
<div class="demo"> 

<div class="column"> 

    <div class="portlet"> 
     <div class="portlet-header">Feeds</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
     <div> 
      <div id="button1"></div> 
     </div> 
     <script> 
           $("#button1").button({ 
            icons: { 
             primary: "ui-icon-locked" 
            }, 
            label: 'Button1' 
           }).click(function(){ 
            alert('Alert'); 
           }); 
     </script> 
    </div> 

    <div class="portlet"> 
     <div class="portlet-header">News</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

</div> 

<div class="column"> 

    <div class="portlet"> 
     <div class="portlet-header">Shopping</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

</div> 

<div class="column"> 

    <div class="portlet"> 
     <div class="portlet-header">Links</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

    <div class="portlet"> 
     <div class="portlet-header">Images</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 

</div> 

</div><!-- End demo --> 



<div class="demo-description"> 
<p> 
    Enable portlets (styled divs) as sortables and use the <code>connectWith</code> 
    option to allow sorting between columns. 
</p> 
</div><!-- End demo-description --> 

</body> 
</html> 

답변

0

문제는 Y이다 클릭 기능을 포틀릿 자체의 html에있는 button1에 바인드하므로 jQuery UI가 도우미 객체를 복제 할 때 두 번째로 실행됩니다. 해결책은 간단합니다. 피드 포틀릿의 스크립트 요소 안의 코드를 페이지 헤드의 스크립트 섹션 (준비 처리기에서 실행되는 다른 코드와 같은 함수 본문)으로 이동하십시오.