jQuery设置属性onclick所有元素,而不是使用内联JS
jQuery set attribute onclick all elements instead of using inline JS
我有一些内联JS,在转换到jQuery时遇到了问题。我想删除所有内联onclick事件,并按类将它们全部作为目标。
HTML-复选框
<td class="center">
<?php if ($product['selected']) { ?>
<input type="checkbox" name="selected[]" id="<?php echo $product['product_id']; ?>_select" value="<?php echo $product['product_id']; ?>" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="selected[]" id="<?php echo $product['product_id']; ?>_select" value="<?php echo $product['product_id']; ?>" />
<?php } ?>
</td>
HTML-内联JS
<input type="text" class="editable" name="<?php echo $product['product_id']; ?>_model" id="<?php echo $product['product_id']; ?>_model" value="<?php echo $product['model']; ?>" size="16" onclick='document.getElementById("<?php echo $product['product_id']; ?>_select").setAttribute("checked","checked");' />
上面的代码可以工作,但当我尝试使用jQuery version 1.7.1
时,它会中断。这是我试过的代码。
$(document).ready(function() {
$(".editable").live("click", function() {
$("#<?php echo $product['product_id']; ?>_select").attr("checked", "checked");
$("#<?php echo $product['product_id']; ?>_select").checked = true;
});
});
我对jQuery不是很熟悉,但我认为它很接近。有什么想法吗?
编辑:问题是$("#<?php echo $product['product_id']; ?>_select")
,如果硬编码,它也能工作。KevinB是正确的,尽管我以前从未遇到过这个问题,但从未在这里使用过$(element)
.live
在版本1.7中已被弃用——这可能解释了这一点。请改用.on
。
$(".editable").on("click", function() {
var name = '<?php echo $product['product_id']; ?>';
console.log("Name: " + name);
var el = $("#" + name + "_select");
console.log(el);
el.prop("checked", "checked");
});
相关文章:
- Ember JS属性访问器
- Backbone.js属性/抓取似乎很有趣
- 单击“替换”时JS属性值
- 计算2个ember.js属性的和
- 在自己的js中访问Google Analytics js属性
- 如何中止 Bacon.js 属性,该属性在到达 404 后发出 AJAX 请求
- Rivets.js属性依赖于几个字段
- 从另一个属性引用js属性的正确方式
- Ember.js:属性更改时未调用控制器属性
- 加载依赖于页面的面向对象JS属性的最好方法是什么?
- 在模型中无法访问选定对象中的Angular js属性
- 无法访问js属性
- 访问JS属性-数据.Att vs. data["attr"]
- 如何将多个属性传递到Angular.js属性指令中?
- js属性的新值和旧值
- 反应.js属性
- screen.width JS属性的值
- path>无效值d3.js属性
- 了解backbone.js属性和toJSON()
- 如何将JS属性Array发送到Jersey JAX-RS基于JSON的REST web服务