嘿,我环顾了Stack Overflow并尝试了其他一些人的尝试,但我无法让它发挥作用。
我有一个像这样的选择元素:
<select id="slct_firstCat" name="slct_firstCat" size="15">
</select>
这只显示一个特定的AJAX请求完成后,所以这个select元素没有加载原始页面的DOM,它在主页加载后作为单独的AJAX请求加载。
我基本上想要这样做......
if (/* select element exists */) {
// Then change the colour of a div to green
} else {
// Change the colour to red
}
但请记住,这必须在页面加载之后工作。如果需要,我可以单击select来运行JS函数。
我在下面尝试了这段代码,但无法让它工作:
if ($(".element1").length > 0 || $(".element2").length > 0 {
// code
}
基本上,如果select元素存在,则将标签颜色更改为绿色,否则将其更改为红色。
答案 0 :(得分:5)
您必须将代码置于jQuery.ajax()
的成功回调中。 > 0
中不需要$('.element1').length > 0
部分,因为与Ruby不同,0
和""
在JavaScript中也是falsy。
jQuery.ajax({
url: 'example.php',
success: function () {
if ($('#slct_firstCat').length) {
$('#myDiv').css('color', 'green');
} else {
$('#myDiv').css('color', 'red');
}
});
答案 1 :(得分:2)
您可以尝试使用以下内容:
if ($('select#slct_firstCat').length) {
// ... stufff....
}
答案 2 :(得分:1)
将你的if块移动到ajax成功它将起作用
举个例子
$.ajax({
url: "test.html",
context: document.body,
success: function(){
if ($(".element1").length > 0 || $(".element2").length > 0 {
...stuff...
}
}
});
答案 3 :(得分:0)
您应该在事件发生时更改颜色,即当您的ajax调用成功,启动或触发其他事件时。无论如何,您可以使用此代码,这不是最好的方法,但适合您的需求:
$(document).ready(function(){
setInterval(function(){
if($("#slct_firstCat").size() > 0)
$("#divColour").css("backgroundColor", "green");
else
$("#divColour").css("backgroundColor", "red");
}, 100);
});