2013-03-06 12 views
7

chcę otworzyć przycisk wyboru jeśli kliknięciu na etykiecie,Po kliknięciu na przycisk wyboru etykiety powinien dostać otwarte

Oto kod

<label>sachin</label> 
<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
</select> 

jest jakiś sposób w css lub jQuery? nie jestem tego pewien.

skrzypce: http://jsfiddle.net/Yh3Jf/

+0

Na razie nie możemy. Najlepszym rozwiązaniem będzie skorzystanie z rozwijanej listy jQuery w celu utworzenia własnej listy rozwijanej. Goto http://stackoverflow.com/questions/360431/can-i-open--dropdownlist-using-jquery Tutaj jest kilka wtyczek, które mogą Ci pomóc http://www.jquery4u.com/ wtyczki/10-jquery-selectboxdrop-down-plugins/ – JoDev

+0

Nie sądzę, że to możliwe. Możesz * skupić * zaznaczenie przy pomocy etykiety, ale nie będzie ono rozwijane. Myślę, że to zależy od systemu operacyjnego. –

Odpowiedz

4

Chcesz zrobić coś takiego ? http://jsfiddle.net/Yh3Jf/6/

<label id="l">sachin</label> 
    <select id="s"> 
     <option>1</option> 
     <option>2</option>   
     <option>3</option> 
     <option>4</option> 
    </select> 

$("#l").click(function() { 
    var size = $('#s option').size(); 
    if (size != $("#s").prop('size')) { 
     $("#s").prop('size', size); 
    } else { 
     $("#s").prop('size', 1); 
    } 
}) 
+0

wspaniały koleś. To właśnie chcę – supersaiyan

0

Niestety inst można wykorzystać każdy rodzaj kodu, aby mieć natywną wybierz rozwijaną pokazać.

ale widziałem ludzi używa obrazu backgrond a następnie wybierz wyskakuje (sprawdź Mightydeals.com)

Jeśli nie rozwiąże do jQuery i niektóre HTML do wytworzenia efektu.

2

Jeśli dopiero próbuje zdobyć ostrość na pole zaznaczania (co pozwoli Ci strzałka w górę iw dół), można użyć coś jak ...

<label for="sel">sachin</label> 
<select id="sel"> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
</select> 
+0

nie chcę go otworzyć – supersaiyan

7

Niewłaściwe chłopaki; aby uzyskać natywną wyboru-list po prostu zrobić niewidzialną klona pod mysz:

$("label").mouseover(function(){ 
    var $this = $(this); 
    var $input = $('#' + $(this).attr('for')); 
    if ($input.is("select") && !$('.lfClon').length) { 
     var $clon = $input.clone(); 
     var getRules = function($ele){ return { 
      position: 'absolute', 
      left: $ele.offset().left, 
      top: $ele.offset().top, 
      width: $ele.outerWidth(), 
      height: $ele.outerHeight(), 
      opacity: 0, 
      margin: 0, 
      padding: 0 
     };}; 
     var rules = getRules($this); 
     $clon.css(rules); 
     $clon.on("mousedown.lf", function(){ 
      $clon.css({ 
       marginLeft: $input.offset().left - rules.left, 
       marginTop: $input.offset().top - rules.top, 
      }); 
      $clon.on('change blur', function(){ 
       $input.val($clon.val()).show(); 
       $clon.remove(); 
      }); 
      $clon.off('.lf'); 
     }); 
     $clon.on("mouseout.lf", function(){ 
      $(this).remove(); 
     }); 
     $clon.prop({id:'',className:'lfClon'}); 
     $clon.appendTo('body'); 
    } 
}); 

testowany na IE10, Chrome 27 i Firefox 22

Demo: http://jsfiddle.net/Yh3Jf/24/

+1

IMO to powinna być akceptowana odpowiedź –

+1

zbyt agresywna, klonowanie obiektu dom ma wiele nieoczekiwanych wyników – Ayyash

+1

Jakie nieoczekiwane wyniki @Ayyash? Oczywiście powinieneś przetestować wszystko, co nadal działa po jego wdrożeniu. Bez względu na to, jeśli chcesz mniej "agresywnie", możesz zawsze skopiować kod