$()。触发器从控制台工作但不在代码中工作

时间:2012-10-30 15:47:11

标签: javascript jquery jquery-selectors

我有一个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:防止垃圾邮件不允许我上传截图:(。

0 个答案:

没有答案