-1

我有一个包含循环的 riot 标签,如下所示。这个循环在另一个防暴循环内(也许很重要?)。升级到 riot 2.3.0 版本后,页面变慢无响应。发行说明指出防暴循环速度较慢但更可靠。

我发现当我从输入标签中删除 id 时,页面再次响应。在输入上没有 id 的情况下,我想我会重写 onclick 方法来识别以其他方式单击了哪个节点。

这不起作用,因为我的 onclick 方法似乎没有被注册。所以我的问题是:输入没有 id 或 name 是否违法?还是我可能做错了什么?

<div class="card-action">
   <div each={field in obj.fields} class="col s6" no-reorder>
       <a>{ field.label }</a>
       <form action='#'>
        <input type="radio" id="always-{field.id}" checked={ parent.currentDisplayAlways[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Always</label>

        <input type="radio" id="conditional-{field.id}" checked={ parent.currentDisplayConditional[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Conditional</label>

        <input type="radio" id="never-{field.id}" checked={ parent.currentDisplayNever[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Never</label>
        </form>
     </div>
 </div>
4

2 回答 2

0

我认为您可以绑定方法并在方法中添加您的 ID 或对象。如果要查找单击的项目,可以使用事件。

于 2016-01-18T20:47:49.327 回答
0

没有or属性的 HTML绝对是合法的。要确定在没有Javascript 的情况下单击了哪个节点,您可以传递要调用关键字的函数,该关键字几乎是该元素的整个 DOM 对象,正如. 所以,函数看起来像这样:inputidnameidthisdocument.getElementById()

function firedAfterClicked(el) {
   alert(el.checked); //Whatever you want it to do
}

输入看起来像这样:

<input type="radio" checked={ parent.currentDisplayNever[field.name] } onclick="firedAfterClick(this)">

每当单击该代码时,该代码都会调用该firedAfterClick函数,并将输入作为 DOM 元素传递给该this关键字。

但是,我感觉真正的问题与您的 Riot 代码有关。取出id属性对我来说似乎更像是一种临时解决方法,而不是真正的解决方案。

于 2016-01-18T20:54:01.303 回答