2016-01-21 58 views
1

所以我有从PHP产生一些HTML元素,因为大多数的内容从数据库回波-ED HTML元素不在JAVASCRIPT读

<?php 
    ... 
    while($row = $sqlQry->fetch_object()) { 
     echo "<li class = 'lstOption' id = 'opt$row->name' data-value = '$row->total_count'> 
        <h3>$row->given_reference<h3> 
       </li>"; 
    } 
    ... 
?> 

取出,这是一个示例结构根据我的javascript

<script> 
    $("ul li").click(function(){ 
     alert($(this).data('value')); 
    }); 
</script> 

,但如果我的注入属性onClick=而回声内。该脚本正确执行。我需要的是脚本使用PHP中的echo -ed html元素。

回答

3

尝试使用变量插值语法,即环绕大括号

的变量

“{$ VAR}” 留意,你必须用双引号(“ “)这个

"<li class = 'lstOption' id = 'opt{$row->name}' data-value = '{$row->total_count}'> 
       <h3>{$row->given_reference}<h3> 
      </li>" 
+0

uhm。他们有什么用途? – TheQuestioner

+0

基本上告诉一个PHP字符串,你正在向它注入一个变量的值,而不使用连接,它也适用于数组“lorem {$ arr ['ipsum'}” – Eugene

2

您应该尝试使用$(document).ready()方法进行代码绑定。 这是因为一旦你的所有DOM元素准备好了,然后代码绑定文档准备就会出现。 所以做下面的代码。

<?php 
    ... 
    while($row = $sqlQry->fetch_object()) { ?> 
     <li class = 'lstOption' id = 'opt<?php echo $row->name?>' data-value = '<?php echo $row->total_count?>'> 
        <h3><?php $row->given_reference?><h3> 
       </li>"; 
    } 
<?php ... 
?> 


<script> 
$(document).ready(function(){ 
$("ul li").click(function(){ 
     alert($(this).data('value')); 
    }); 
}); 
</script> 

或写如下

<script> 
    $(document).ready(function(){ 
    $("ul li").on("click",function(){ 
      alert($(this).data('value')); 
     }); 
    }); 
    </script> 
+0

该脚本已经在'$(document).ready(function(){});'sir – TheQuestioner

+0

所以,你能让我知道你的完整的HTML代码吗?所以我可以修复它 – KinjalMistry

2

只要把你的脚本里面的文件准备好如下。这将解决这个问题

$(document).ready(function(){ 
    $("ul li").click(function(){ 
     alert($(this).data('value')); 
    }); 
}); 
+0

该脚本已经在'$(document).ready(function(){});'sir中。仍然没有修复 – TheQuestioner

+0

你在firebug中看到这个生成的html吗? – Thanga

1

您可以尝试通过ID来选择和使用上()方法:

$(document).on('click', '[id^="opt"]', function() {}); 

仅适用于没有其他标识以“opt”开头的其他内容。 在我看来,ID选择器总是比任何其他选择器都强。 on()方法也是可取的,因为它也适用于动态生成的元素(例如,通过ajax添加内容的情况)

此外,如果要打印数据中的实际值而不是公式,价值,你的报价是错误的,这里是正确的版本:

while($row = $sqlQry->fetch_object()) { 
    echo "<li class = 'lstOption' id = 'opt".$row->name."' data-value = '".$row->total_count."'> 
       <h3>".$row->given_reference."<h3> 
      </li>"; 
} 
+0

@TheQuestioner我认为你的问题来自你的引用,并且你不连接php部分。阅读我的编辑 –

1

尝试像

$(document).ready(function(){ 
    $("ul li").on('click', function(){ 
     console.log($(this).data('value')); 
    }); 
}); 

由于您html元素动态生成,你必须使用on()

+0

根据jquery文档从1.7它已被弃用,并从1.9它被删除。我正在使用2.1.4 atm – TheQuestioner

+0

@TheQuestioner尝试'on()' – Butterfly