jQuery:如果存在select元素,则执行一些操作

时间:2011-05-01 18:55:45

标签: javascript ajax jquery jquery-selectors

嘿,我环顾了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元素存在,则将标签颜色更改为绿色,否则将其更改为红色。

4 个答案:

答案 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);
});