Javascript .addClass()不在()jQuery的内部工作

Javascript .addClass()不在()jQuery的内部工作,javascript,jquery,Javascript,Jquery,更新-最终解决方案 感谢所有帮助我解决这个问题的人特别感谢@Pranav通过电子邮件提供的所有帮助。您的所有答案似乎都在JSFIDLE中有效,但我无法在本地服务器上复制它 我的问题是,我的js文件在PHP完成动态添加元素和类之前启动。我可以通过调用以下命令(无需使用事件处理程序)解决此问题: ( function() { jQuery(window).load( function($) { // Add stuff }); })(jQuery); 这似乎要等到PHP完成任务后再启动

更新-最终解决方案

感谢所有帮助我解决这个问题的人特别感谢@Pranav通过电子邮件提供的所有帮助。您的所有答案似乎都在JSFIDLE中有效,但我无法在本地服务器上复制它

我的问题是,我的js文件在PHP完成动态添加元素和类之前启动。我可以通过调用以下命令(无需使用事件处理程序)解决此问题:

( function() {
    jQuery(window).load( function($) {

// Add stuff

});
})(jQuery);
这似乎要等到PHP完成任务后再启动。我可以在DevTools面板中看到这些更改

我也没有意识到Wordpress似乎真的不喜欢$,而是更喜欢jQuery,所以我不得不创建
$=jQuery
变量来解决这个问题

再次感谢大家。我刚刚开始学习jQuery和Javascript,这是一个很好的教训


原始问题

我正试图根据WooCommerce提供的类向选择框选项添加类。(原因是我放弃了指向无法工作的“禁用”属性。)

出于某种原因,我使用的代码没有添加任何类

jQuery(文档).ready(函数($){
//链接和可见下拉列表的类
$selectclass='turnintodropdown';//用于标识所选内容的类
$listclass='turnitoselect';//用于标识ULs的类
$boxclass='dropcontainer';//父元素
$triggeron='activetrigger';//活动触发器链接的类
$triggeroff='trigger';//非活动触发器链接的类
$dropdownclosed='dropdownhidden';//关闭的下拉列表
$dropdownopen='dropdownvisible';//打开下拉菜单
$i=0;
$count=0;
$sels=$('select');
$opts=$('option');
$trigger=(“”);
函数$switchTriggerClass(){
$($trigger).toggleClass($triggeron).toggleClass($triggeroff);
}

对于($i;$iInside for loop
不是指元素,它可能是
窗口
对象或其他东西。您可以使用方法解决此问题


- -
10
20
30
40
50
60

内部for循环
不是指它可能是
窗口
对象或其他对象的元素。您可以使用方法解决此问题


- -
10
20
30
40
50
60

您必须从

for($i; $i<$opts.length; $i++){
        if($($opts).hasClass('enabled')){
            $(this).addClass('woo');
        }
        else {
            $(this).addClass('foo');
        }
    }

另一种方法是:

$('option.enabled').addClass('woo');      
$opts.not('.enabled').addClass('foo');

您必须从更改代码块

for($i; $i<$opts.length; $i++){
        if($($opts).hasClass('enabled')){
            $(this).addClass('woo');
        }
        else {
            $(this).addClass('foo');
        }
    }

另一种方法是:

$('option.enabled').addClass('woo');      
$opts.not('.enabled').addClass('foo');

如果您需要其他选择,则可以使用
foreach

$opts.each(function(){
        if(($(this)).hasClass('enabled')){
            $(this).addClass('woo');
        }
        else {
            $(this).addClass('foo');
        }
    })

如果您需要其他选择,则可以使用
foreach

$opts.each(function(){
        if(($(this)).hasClass('enabled')){
            $(this).addClass('woo');
        }
        else {
            $(this).addClass('foo');
        }
    })

试试这种方法

$sels.find('option').each(function() {
 if($(this).hasClass('enabled')) {
  $(this).addClass('woo');
 } else {
  $(this).addClass('foo');
 }
});

试试这种方法

$sels.find('option').each(function() {
 if($(this).hasClass('enabled')) {
  $(this).addClass('woo');
 } else {
  $(this).addClass('foo');
 }
});

循环的In side for loop
不会提供循环中的当前元素。您需要使用
$($opt[$i]).hasClass()
才能访问选择框中的选项

jQuery(文档).ready(函数($){
//链接和可见下拉列表的类
$selectclass='turnintodropdown';//用于标识所选内容的类
$listclass='turnitoselect';//用于标识ULs的类
$boxclass='dropcontainer';//父元素
$triggeron='activetrigger';//活动触发器链接的类
$triggeroff='trigger';//非活动触发器链接的类
$dropdownclosed='dropdownhidden';//关闭的下拉列表
$dropdownopen='dropdownvisible';//打开下拉菜单
$i=0;
$count=0;
$sels=$('select');
$opts=$('option');
$trigger=(“”);
函数$switchTriggerClass(){
$($trigger).toggleClass($triggeron).toggleClass($triggeroff);
}
对于($i;$i<$opts.length;$i++){
if($($opts[$i]).hasClass('enabled')){
$($opts[$i]).addClass('woo');
}
否则{
$($opts[$i]).addClass('foo');
}
}
});

大小
- -
10
20
30
40
50
60

循环的内部
不会提供循环中的当前元素。您需要使用
$($opt[$i]).hasClass()
才能访问选择框中的选项

jQuery(文档).ready(函数($){
//链接和可见下拉列表的类
$selectclass='turnintodropdown';//用于标识所选内容的类
$listclass='turnitoselect';//用于标识ULs的类
$boxclass='dropcontainer';//父元素
$triggeron='activetrigger';//活动触发器链接的类
$triggeroff='trigger';//非活动触发器链接的类
$dropdownclosed='dropdownhidden';//关闭的下拉列表
$dropdownopen='dropdownvisible';//打开下拉菜单
$i=0;
$count=0;
$sels=$('select');
$opts=$('option');
$trigger=(“”);
函数$switchTriggerClass(){
$($trigger).toggleClass($triggeron).toggleClass($triggeroff);
}
对于($i;$i<$opts.length;$i++){
if($($opts[$i]).hasClass('enabled')){
$($opts[$i]).addClass('woo');
}
否则{
$($opts[$i]).addClass('foo');
}
}
});

大小
- -
10
20
30
40
50
60

if($($opts[$i]).hasClass('enabled'))
还有
这个
上下文是哪个?注意,美元符号用于将变量标记为jQuery对象。如果只有jQuery对象以美元符号作为前缀,您会立即知道它是jQuery对象还是其他对象。