检查动态添加的类时,jquery hasClass不起作用

时间:2013-08-22 06:13:19

标签: php javascript jquery class

我有一个problam,我通过php dynalically添加一个类到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"); ?>
};

我不知道为什么,但两个ifs都包含语言php文件。 但也许原因是因为这个脚本在带有标题<?php header('Content-type: text/javascript'); ?>的php文件中我附加了像<script type="text/javascript" src="php/FormuValidacija.php" /></script>

这样的索引页面中的javascript文件这样的文件

我试过

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

但也行不通:(

P.S。对不起,如果这是一个愚蠢的问题,我是这个东西的新人,但愿意学习! :)

4 个答案:

答案 0 :(得分:2)

看起来您的脚本未添加到像

这样的dom ready处理程序中
jQuery(function($){
alert($('#checkLang').length)//it should alert 1 not 0
if ($('#checkLang').hasClass('RU')){
    <?php include("lan/ru.php"); ?>
};
})

答案 1 :(得分:1)

目前的语言:

<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.Sunlabākvisusvariablus,script failus etcsauktnglūvalodā:)

答案 2 :(得分:0)

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

http://jsfiddle.net/n5e9a/

无论如何都将呈现两个php文件,因为这里的if check是在客户端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);
});

答案 3 :(得分:0)

它包含你的内容,因为它已经生成了服务器端,所以当html网站被转移时,php脚本已经被rendnered而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 ready handler ...

关于jan