jQuery函数不在PHP foreach循环内执行

我正在尝试为筛选器面板生成许多复选框,选中此选项后会刷新考虑特定参数的产品列表。

在foreach循环中,我通过从API调用的xml数据中收集filter属性来成功创建复选框

foreach ($attrib->attributeValues->attributeValue as $attribValue) { $attribValue = $attribValue->name; $attribValueID = $attribValue[@id]; $BODY .= sprintf(" %s ", $attribClass, $attribValue, $attribValue, $attribValue, $attribValue); 

接下来,我正在测试一个基本的jQuery函数,它有两个简单的警报,以确保实际调用函数

 $BODY .= ""; $BODY .= "alert('Hello world!');"; $BODY .= "$(\"#".$attribValue."\").change(function() {"; $BODY .= "var $input = $(this);"; $BODY .= "alert(\"".$attribValue."\");"; $BODY .= "}).change();"; 

当我在页面上运行时,渲染的html源代码肯定显示正在生成jQuery函数(多次,每个复选框创建一个),但我没有看到任何一个警报 – 函数外部的警报,或者里面的那个。 这是我第一次使用jQuery – 任何想法? 一如既往地谢谢!

编辑:对不起,这是生成的两个复选框的HTML源代码 – 这对于所有存在的复选框都是如此,这两个复选框都是两位数。

  Black alert('Hello world!');$("#Black").change(function() {var = $(this);alert("Black");}).change();  Silver alert('Hello world!');$("#Silver").change(function() {var = $(this);alert("Silver");}).change(); 

这是我更新的修复程序。

 $BODY .= ""; 

你可以在这个小提琴中看到这个输出的一个例子

我必须写入$(document).ready()以及在php中转义$input以确保它不会呈现为php字符串。 我还将.change()更改为.live('click',.click()

实时部分将确保看到动态加载的复选框。 我只是喜欢点击事件,如果您愿意,可以将其设置为更改。

干杯!

我认为你在这里覆盖$attribValue$attribValue = $attribValue->name; – 你应该可以使用另一个变量来存储该值: $myAttribValue = $attribValue->name;

你不需要在这里使用jQuery来复杂化它。

用这个:

 function filterToggle(element){ var elementII = document.getElementById(element) if(elementII.checked){ alert("Checked"); } else{ alert("Unchecked"); } } 

然后在你的复选框中添加一个onclick =“filterToggle(’%s’)”