在if条件下使用$(document).data()时遇到困难

时间:2017-09-01 13:35:23

标签: jquery

我有以下代码,它成功地将value存储为name,然后我可以将其用作php中的全局变量。这是完整的代码(除了标签和jquery链接):

<script>
$(document).data('name', "value");
</script>

<?php $Phpvar = "<script>document.writeln($(document).data('name'))‌​;</script>"; 
print_r($Phpvar); ?> //Prints "value"

但是,如果我将$(document).data函数放在if条件中,则会停止工作:

<head>
<script>
if ($("div").hasClass("blah")){
$(document).data('name', "value");
}
</script>
</head>

<body>
<div class = "blah"></div>

<?php $Phpvar = "<script>document.writeln($(document).data('name'))‌​;</script>"; 
print_r($Phpvar); ?> //Prints "undefined"
</body>

我尝试了$(document).ready,但仍然无效。 (another variable绝对等于0):

<head>
<script>
$(document).ready(function(){
if ($("div").hasClass("blah")){
$(document).data('name', "value");
}
});
</script>
</head>

<body>
<div class = "blah"></div>

<?php $Phpvar = "<script>document.writeln($(document).data('name'))‌​;</script>"; 
print_r($Phpvar); ?> //Prints "undefined"
<body>

如何在保持在我的php中使用$(document).data('name', "value");的能力的同时向document.writeln($(document).data('name'))‌​;添加条件?

2 个答案:

答案 0 :(得分:0)

显而易见的结论是,leveldeterminant实际上并不等于0.在if语句之前添加console.log(leveldeterminant)并检查它包含的值

答案 1 :(得分:-1)

你应该关闭你的if块

DECLARE @tt TABLE(Id INT, Value NVARCHAR(256), Data NVARCHAR(256));
INSERT INTO @tt(Id,Value,Data)
VALUES
    (1,N'Value1',N'Data1'),
    (2,N'Value2',N'Data2'),
    (2,N'Value3',N'Data3'),
    (2,N'Value4',N'Data4'),
    (3,N'Value5',N'Data5'),
    (3,N'Value6',N'Data6');

SELECT
    t_o.Id,
    ValueDatas='['+STUFF((
        SELECT
            ', {"Value" : "'+ Value +'", "Data" : "' + Data + '"}'
        FROM
            @tt AS t_i
        WHERE
            t_i.Id=t_o.Id
        FOR XML
            PATH(''), TYPE
    ).value('.[1]','NVARCHAR(MAX)'),1,2,'')+']'
FROM
    @tt AS t_o
GROUP BY
    t_o.Id