代码:
function disableOption(pos)
{
//document.getElementById("selectSuggestion").options[pos].disabled=true; <-- this is what I want to do
var option = $(#selectRating).children()[pos]; <-- doesnt work
$(#selectRating).find(option).prop("disabled", true);
}
function addEventListeners()
{
$(#selectRating).bind("focus", disableOption(0));
}
function init()
{
addEventListeners();
}
$(document).ready(init);
我不太熟悉jQuery API和语法,我检查了http://api.jquery.com/category/traversing/和其他类似的线程,但没有找到解决方案。
修改
固定代码:
function disableOption(pos)
{
$("#selectRating option:eq(" + pos + ")").prop("disabled", true);
}
function addEventListeners()
{
$("#selectRating").on("focus", function() {disableOption(0);});
}
function init()
{
addEventListeners();
}
$(document).ready(init);
答案 0 :(得分:3)
选择器周围的引用!
$("#selectRating")
还可以缩短:$(#selectRating).children()[pos];
到$("#selectRating option:eq(" + pos + ")").prop("disabled", true);
假设selectRating
是select
元素,如果没有,请忽略它。
答案 1 :(得分:1)
怎么样
$('#selectRating option:eq("' + pos + '")').prop('disabled', true);
答案 2 :(得分:1)
您正在调用该函数,而不是将函数引用绑定为处理程序,并记住选择器周围的引号。
$(#selectRating).bind("focus", disableOption(0)); //This just invokes the function as you try to bind the handler.
应该是
$("#selectRating").bind("focus", function(){
disableOption(0);
});
你需要这样做:
$("#selectRating").children(":eq(" + pos + ")").prop("disabled", true);
或简化为:
function disableOption(pos) {
$(this).children(":eq(" + pos + ")").prop("disabled", true);
}
function addEventListeners() {
$('#selectRating').bind("focus", function(){
disableOption.call(this, 0);
});
}