<p>المختار: فتح لا يعمل</p>

تم إنشاؤها على ٢٢ ديسمبر ٢٠١٣  ·  5تعليقات  ·  مصدر: harvesthq/chosen

أنا أحاول فتح تحديد بعد النقر فوق الزر ، لكنه لا يعمل. إذا قمت بإدخال وتنبيه () بعد المشغل ، يتم فتحه ...
(باستخدام v1.0 المختار مع jquery)

مثال:

<select id="select">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3">c</option>
</select>
<br>
<button onclick="$('#select').trigger('chosen:open'); ">Press this button to open (doesnt work) </button>
<button onclick="$('#select').trigger('chosen:open'); alert('ups!');">Press this button to open (work???)</button>

<script>
$(document).ready(function() {
$('#select').chosen();
});
</script>

مثال في: http://jsfiddle.net/EArg6/28/

التعليق الأكثر فائدة

عند النقر فوق الزر ، يتلقى Chosen الحدث chosen:open . ومع ذلك ، يستمر الحدث في الظهور في DOM ويكتشف Chosen على الفور نقرة على عنصر غير المختار النشط ... لذلك يغلقه. منطقي؟

إذا كنت تعمل مع JS المضمنة ، فإن أسهل حل هو استخدام setTimeout للخروج من مكدس الأحداث الحالي:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

من شبه المؤكد أنك لا يجب أن تستخدم JS المضمنة. لا يزال بإمكانك استخدام setTimeout إذا كنت تريد ، ولكن مجرد إيقاف فقاعة الحدث يجب أن يكون جيدًا بدرجة كافية.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

لقد قمت بتحديث كمارك بكود العمل هذا: http://jsfiddle.net/EArg6/33/

ال 5 كومينتر

لا يعمل أي من الزرين بالنسبة لي في Fiddle (في Safari).

ما المتصفح / الإصدار الذي تستخدمه؟

لقد اختبرت ذلك باستخدام:

  • Firefox 25.0.1
  • أوبرا 12.16.2007
  • كروم 31.0.1650.63 م

الزر الأول لا يعمل
الزر الثاني يفتح قائمة الخيارات (يغلق فقط عندما أغلق مربع "التنبيه").

عند النقر فوق الزر ، يتلقى Chosen الحدث chosen:open . ومع ذلك ، يستمر الحدث في الظهور في DOM ويكتشف Chosen على الفور نقرة على عنصر غير المختار النشط ... لذلك يغلقه. منطقي؟

إذا كنت تعمل مع JS المضمنة ، فإن أسهل حل هو استخدام setTimeout للخروج من مكدس الأحداث الحالي:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

من شبه المؤكد أنك لا يجب أن تستخدم JS المضمنة. لا يزال بإمكانك استخدام setTimeout إذا كنت تريد ، ولكن مجرد إيقاف فقاعة الحدث يجب أن يكون جيدًا بدرجة كافية.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

لقد قمت بتحديث كمارك بكود العمل هذا: http://jsfiddle.net/EArg6/33/

شكرا @ pfiller

شكرًا pfiller ،

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات