我有一个 html 模板,可以修改 html 选择框的外观。
<select id='floorinput' class='select multiple-as-single easy-multiple-selection check-list allow-empty' multiple style="width:100px"></select>
该模板使用类来美化选择框。选择框的选项由 ajax 调用的结果填充,并且工作正常。选择框最终在浏览器上呈现如下:
<span class="select multiple-as-single easy-multiple-selection check-list allow-empty replacement" style="width: 97px; " tabindex="0">
<span class="select-value alt">All</span>
<span class="select-arrow"></span>
<span class="drop-down custom-scroll" style="">
<span class="selected"><span class="check"></span>Floor-1</span>
<span class="selected"><span class="check"></span>Floor-2</span>
.....
<div class="custom-vscrollbar" style="display: none; ">
<div></div>
</div></span>
<select id="floorinput" class="" multiple="" style="width: 100px; display: none; " tabindex="-1">
<option value="Floor-1" selected="selected">Floor-1</option>
<option value="Floor-2" selected="selected">Floor-2</option>
</select>
</span>
该模板通过隐藏实际的选择框并呈现一个花哨的选择框来工作。
我想模拟鼠标点击这个选择框。目的是取消选择已经选择的选项。模板代码无法处理对#floorInput 选项的编程点击(实际的 html 输入)。所以我决定点击像这样的跨度:
var j = 0;
//DEselect selected floors programtically
$("#floorinput option").each(function () {
if ($(this).attr("selected") == "selected") {
console.log('should deselect this:' + $(this).text());
$('.select-value.alt').click();//simulate click to open dropdown
$('.drop-down.custom-scroll span.check')[j].click();//perform click. ERROR here
}
else {
console.log('already selected :' + $(this).text());
}
j++;
});
我在 Windows 7 上使用 chrome 版本 22.0.1229.94 m。代码引发如下错误:
Uncaught TypeError: Cannot call method 'click' of undefined
但是当我通过 Chrome 的控制台调用相同的方法时,它会按预期工作:
$('.select-value.alt').click();
$('.drop-down.custom-scroll span.check')[0].click();//select or deselect first option
问题的可能原因可能是在调用 $('.select-value.alt').click(); 后选择框的标记不可用。但是我尝试通过几种方法延迟第二个方法调用,但它不起作用。
jquery方法通过控制台工作但在实际执行期间没有工作的任何场景?请帮忙。PS:垃圾邮件预防不允许我上传屏幕截图:(。