jquery hasClass做';在检查动态添加的类时不起作用


jquery hasClass does't work when checking dynamically added class

我有一个问题,我通过php动态地向div添加一个类,然后检查id"checkLang"是否有空间类,但它不起作用:(

也许有人知道这个问题?我的html:

<div id="checkLang" class ="<?php echo $valoda ?>"><div>

我和核实的那个div

if ($('#checkLang').hasClass('RU')){
    <?php include("lan/ru.php"); ?>
};
if ($('#checkLang').hasClass('LV')){
    <?php include("lan/lv.php"); ?>
};

我不知道为什么,但两个if都包含php语言文件。但可能是因为这个脚本在php文件中,标题为<?php header('Content-type: text/javascript'); ?>,我在索引页中附加了类似javascript文件的文件,如<script type="text/javascript" src="php/FormuValidacija.php" /></script>

我试过

if($_GET['lang']=="latviesu"){
include("php/lan/lv.php");
}
else($_GET['lang']=="krievu"){
include("php/lan/ru.php");
}

但效果不佳:(

附言:对不起,如果这是一个愚蠢的问题,我是新手,但愿意学习!:)

看起来您的脚本没有添加到像这样的dom就绪处理程序中

jQuery(function($){
alert($('#checkLang').length)//it should alert 1 not 0
if ($('#checkLang').hasClass('RU')){
    <?php include("lan/ru.php"); ?>
};
})

当前语言:

<div id="checkLang" class ="<?php echo $valoda ?>"><div>

包括您的本地化文件:

<div class="ru" style="display:none;">
       <?php include("lan/ru.php"); ?>
</div>
<div class="lv"  style="display:none;">
        <?php include("lan/lv.php"); ?>
</div>

获取当前语言并显示相应的div

<script type="text/javascript">
    $(document).ready(function(){
        var currLng = $('#checkLang').attr('class'); // get current language, i.e class of #checkLang
        $('div.' + currLng).show(); // show div with corresponding class, i.e lang
    });
</script>

然而,最好在服务器端获取语言,而不是将未使用的文件加载到客户端(即HTML)

p.S un labāk visus variableus,script failus等saukt anglúvalodā:)

在这里给出我的jsfiddle示例,您可以清楚地看到javascript能够检查给定的类是否设置在div上。

http://jsfiddle.net/n5e9a/

不管怎样,这两个php文件都将被渲染,因为这里的if检查是在客户端javascript上完成的。如果您希望只在客户端完成检查后呈现php文件中的数据。然后,您必须从客户端获取数据,而不是从服务器端提供数据。

其中一种方法是通过ajax。例如您可以创建一个php脚本,根据查询返回html内容,类似于:

checklang.php?lang=RU

在javascript代码中,您会有一个这样设置的请求:

$.get('checklang.php?lang=RU', function(data) { //switch RU with a js variable so you can change between RU and LV programatically
  $('#some-content-div').html(data);
});

它包含了您的内容,因为它已经生成了服务器端,所以当html网站被传输时,php脚本已经被压缩,而javascript是在客户端处理的,您需要调整您的尝试

你看这会工作

<div id="checkLang" class ="<?php echo $valoda ?>"><div>
<div class="ru" style="display:none;">
       <?php include("lan/ru.php"); ?>
</div>
<div class="lv"  style="display:none;">
        <?php include("lan/lv.php"); ?>
</div>

$(document).ready(function()
 {
   if ($('#checkLang').hasClass('RU')){
       $('.ru').show();   
   }
if ($('#checkLang').hasClass('LV')){
     $('.lv').show();   
};             
 });

这里的示例:

http://jsfiddle.net/yVpf4/

很难,它会降低所有语言内容;您应该考虑在php代码中进行语言选择,以避免额外的流量,除非您想在没有任何服务器交互的情况下仅通过javascript切换语言。

关于jan

正如Arun p Johny所说的

您的脚本没有添加到dom就绪处理程序中。。。

关于1月