我有一个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')之后,选择框的标记不可用。单击(); 但我尝试用几种方法延迟第二次方法调用,但它不起作用。
任何jquery方法通过控制台工作而不是在实际执行期间的情况? 请帮忙。 PS:防止垃圾邮件不允许我上传截图:(。