我正在尝试为过滤器面板生成一些复选框,在选中时会刷新考虑特定参数的产品列表。
在foreach循环中,我通过从API调用的xml数据中收集过滤器属性来成功创建复选框
foreach ($attrib->attributeValues->attributeValue as $attribValue)
{
$attribValue = $attribValue->name;
$attribValueID = $attribValue[@id];
$BODY .= sprintf("<input type=\"checkbox\" name=\"%s\" value=\"%s\" id=\"%s\" checked%s=\"checked\" /> %s ",
$attribClass, $attribValue, $attribValue, $attribValue, $attribValue);
接下来,我正在测试一个基本的jQuery函数,其中包含两个简单的警报,以确保函数实际被调用
$BODY .= "<script type=\"text/javascript\">";
$BODY .= "alert('Hello world!');";
$BODY .= "$(\"#".$attribValue."\").change(function() {";
$BODY .= "var $input = $(this);";
$BODY .= "alert(\"".$attribValue."\");";
$BODY .= "}).change();</script>";
当我在页面上运行时,渲染的html源代码肯定会显示正在生成jQuery函数(多次,每个复选框创建一个),但我没有看到任何一个警报 - 外部的警报功能,或内部的功能。这是我第一次使用jQuery - 任何想法?一如既往地谢谢!
编辑:对不起,这是生成的两个复选框的HTML源代码 - 这对于所有存在的复选框都是如此,这是两位数。
<input type="checkbox" name="Color" value="Black" id="Black" checkedBlack="checked" /> Black <script type="text/javascript">alert('Hello world!');$("#Black").change(function() {var = $(this);alert("Black");}).change();</script>
<input type="checkbox" name="Color" value="Silver" id="Silver" checkedSilver="checked" /> Silver <script type="text/javascript">alert('Hello world!');$("#Silver").change(function() {var = $(this);alert("Silver");}).change();</script>
答案 0 :(得分:1)
我认为你在这里覆盖$attribValue
:$attribValue = $attribValue->name;
- 你应该可以使用另一个变量来存储该值:$myAttribValue = $attribValue->name;
答案 1 :(得分:1)
这是我更新的修复程序。
$BODY .= "<script type=\"text/javascript\">";
$BODY .= "$(document).ready(function(){";
$BODY .= "alert('Hello world!');";
$BODY .= "$(\"#".$attribValue."\").live('click',function() {";
$BODY .= "var \$input = $(this);";
$BODY .= "alert(\"".$attribValue."\");";
$BODY .= "}).click();});</script>";
您可以在此Fiddle
中查看此输出的示例我确实必须在$(document).ready()
中写入以及在php中转义$input
以确保它不会呈现为php字符串。我还将.change()
更改为.live('click',
和.click()
实时部分将确保看到动态加载的复选框。我只是喜欢点击事件,如果您愿意,可以将其设置为更改。
干杯!
答案 2 :(得分:1)
这里不需要使用jQuery来复杂化。
使用此:
function filterToggle(element){
var elementII = document.getElementById(element)
if(elementII.checked){
alert("Checked");
}
else{
alert("Unchecked");
}
}
然后在您的复选框中添加onclick =“filterToggle('%s')”