动态选择列表上的单击事件仅适用于 FF


Click event on dynamic select list only works in FF

我有一个用PHP动态创建的选择列表。我还有一个 JQuery 脚本,它根据用户从列表中选择的内容修改表单,但是点击事件仅在 FF 中识别,而不能被 Safari 或 Chrome 识别(尚未尝试过 IE)。我试图使用 JQ 选择器更具体,但这没有帮助。这是我第一次尝试让网站在所有浏览器上运行,因此非常感谢所有帮助。

.HTML

<select id="formcategory" name="Category">
  <option value="Select One">Select One</option>
  <option class="BloodSample" value="1">Blood Sample</option>
  <option class="Exercise" value="2">Exercise</option>
  <option class="InsulinInjection" value="3">Insulin Injection</option>
  <option class="Meal" value="4">Meal</option>
  <option class="Symptoms" value="5">Symptoms</option>
  <option class="UrineSample" value="6">Urine Sample</option>
</select>

PHP to create the select list:                  
<?php
  if(!$_POST) {
    echo "<option value='Select One'>Select One</option>";
    }
  else {
echo "<option value='".$_POST['Category']."'>".$_POST['Category']."</option>";
    }
    foreach($array1 as $key=>$val) {
  if($key<10) {
    echo "<option class='".(str_replace(" ","",$val))."'value='".$key."'>".$val. "</option>";
}
}
?>
JQ
$('#formcategory').on('click','option',function() {
    console.log($(this));//only FF finds the option selected        

我不确定这是否是您问题的原因,但我不会尝试在option上检测click事件,而是检测select本身的change事件:

$('#formcategory').on('change', function() {
    console.log($(this).val());
}

另一个优点是它也允许选择键盘。