创建按钮并在Prototype中识别它们

时间:2012-05-08 18:23:44

标签: php javascript prototypejs scriptaculous

这篇文章是一个多部分的问题,但基本上我用我的产品加载一系列对象。我想要做的是创建一个按钮列表,如下所示:

<?php foreach($records as $product): ?>

    <div><?php echo $product->name; ?></div>

<?php endforeach;  ?>

在每个按钮上单击我想要将信息更改为相应的产品。我的问题是,在Javascript中访问这个php数组的最佳方法是什么?我应该把它转换成json吗?

其次,我在原型中使用什么来使所有这些div标签都有点击事件,我将如何识别产品?我应该检索点击按钮的订单号并从json获取信息吗?那么,如果单击数组中的第3个按钮,我在json中得到第3个条目?

我正在尝试学习原型,因为我喜欢效果,而不是jquery。

2 个答案:

答案 0 :(得分:0)

无论您使用的javascript工具包是什么,要访问HTML元素,请使用id=属性来唯一标识它们,并class=将它们放入公共组。然后使用您选择的工具包的相应函数来检索它们。

<div id="product1" class="product">Product 1</div>
<div id="product2" class="product">Product 2</div>
<div id="product3" class="product">Product 3</div>

对于jQuery,您可以使用,例如,获取标识为product1的元素:

var el = $("#product1");

等等。在原型中,这只是

var el = $("product1");

要获得所有产品,您可以在课堂上获得这些产品。在jQuery中:

var all = $(".product");

和原型:

var all = $$(".product");

有关所有详细信息,请参阅the docs。请特别检查$$$

答案 1 :(得分:0)

我建议反对使用Prototype。我是Prototype + Scriptaculous的早期采用者并且做了很多工作。到2009年,很明显他们失去了开发社区的思想共享,并且jQuery赢了。我不情愿地转向了jQuery。

我发现jQuery语法更清晰,文档更好,社区更大,可用资源更多,其中包括人们可以回答像你这样的问题。

虽然Scriptaculous非常棒,但是jQuery的效果插件也同样多。话虽这么说,这是如何解决你的问题......

是的,我会使用JSON定义内容。

这会创建一个新按钮:

var inputId = "myInput";
var elementName = "Price";
var elementValue = "1.99";

$(element).insert(new Element("input", {type:'button', id:inputId, name:elementName, className:'FBButton', value:elementValue }))

这挂钩事件:

$(inputId).observe('click', function() {...your code ...});

这是我很久以前写过的基于JSON / Prototype的表单生成器的链接,但从未使用过。你可以自由地窃取代码。

http://preview.moveable.com/JM/jameslab/JSONForm/