删除元素上的功能

时间:2013-09-10 18:52:02

标签: javascript

我试图找到一种方法来删除标签上的功能。我习惯于jquery,代码就是这样的。

$(document).on("click",".goto-messages:not(done)", function(e){...
...$(".profile-messages").addClass("done");

我正在尝试使用javascript实现相同的功能,但我没有添加类attribut。我也不确定如何添加参数以不触发函数,例如“:没有(完成)”

            document.getElementsByTagName("td").onclick = function(){
                this.style.background = blue;
                this.class
            }

如何在javascript中实现此结果? 我想删除单击元素的功能。

也是“this.style.background = blue;”这一行正确的吗?

2 个答案:

答案 0 :(得分:1)

你会想要这样的东西(除非你提供一些HTML),例如使用所有浏览器都不支持的element.classList。但是你可以使用类似domtokenlist library的东西,它可以在所有浏览器中提供良好的支持,或者在Adding and Removing Classes, with simple cross-browser JavaScript中可以找到一些RegEx。至于跨浏览器添加事件,而不是使用addEventListener,您可以查看以下How to make this Javascript function work in IE Browser?或在SO上搜索addEvent

HTML

<table>
    <theader>
        <tr>
            <th>Mesages A</th>
            <th>Mesages B</th>
        </tr>
    </theader>
    <tbody>
        <tr>
            <td class="profile-messages">Message1</td>
            <td class="profile-messages">Message2</td>
        </tr>
        <tr>
            <td class="profile-messages">Message3</td>
            <td class="profile-messages">Message4</td>
        </tr>
        <tr>
            <td class="profile-messages">Message5</td>
            <td class="profile-messages">Message6</td>
        </tr>
    </tbody>
</table>

CSS

.profile-messages {
    background-color: red;
}
.done {
    background-color: blue;
}

的Javascript

document.addEventListener("click", function (evt) {
    if (evt.target.tagName.toUpperCase() === "TD" && evt.target.classList.contains("profile-messages")) {
        evt.target.classList.add("done");
    }
}, false);

jsfiddle

答案 1 :(得分:0)

document.getElementsByTagName()返回NodeList,您必须迭代它:

var nodes = document.getElementsByTagName("td");
for (var i=0, len = nodes.length; i<len; i++) {
  nodes.item(i).onclick = function () {
    // do something
  };
}

document.querySelectorAll()用于类似CSS的选择器:

var nodes = document.querySelectorAll(".goto-messages:not(.done)");