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’)”