如何将事件绑定到没有标识符(类或ID)的元素

时间:2017-08-31 10:40:32

标签: javascript jquery html

我刚刚浏览了一个Web应用程序的代码,并看到了这个select元素,它没有任何标识符(classid),但有两个事件附加到此元件

enter image description here

我只是想知道这些事件是如何附加到这个元素的。我的意思是我知道可以附加事件的一些方法,但我不能将事件附加到元素上。 使用class="version_switcher_placeholder"将事件附加到元素的第一个子元素我认为不是一个好主意。

修改:此处的所有人都说我们可以使用class名称version_switcher_placeholder来获取该元素,我理解这一点以及它本身提到的alredy。

我认为该事件可以附加到相关的选择元素。

5 个答案:

答案 0 :(得分:2)

首先,如果你想做dom操作,保持你的元素没有任何选择器不是一个好主意。但是如果你不能改变它,并且如果你确定这样做,你可以使用Child combinatornth-child伪代码的组合。

请考虑此示例以供参考。

<!DOCTYPE html>
<html>
<head>
    <title>
        Title
    </title>
</head>
<body>
<ul>
    <li>
        <select>
            <option value="testVal1">testVal1</option>
            <option value="testVal2">testVal2</option>
            <option value="testVal3">testVal3</option>
            <option value="testVal4">testVal4</option>
        </select>
    </li>
</ul>

    <script type="text/javascript">
    var selectElement = document.querySelector("body > ul:nth-child(1) > li:nth-child(1) > select:nth-child(1)");
    selectElement.style.color = 'red';

    selectElement.addEventListener("change", function(event){
        console.log( event );
    })

</script>
</body>
</html>

答案 1 :(得分:1)

您可以使用类似

的内容
$('.version_switcher_placeholder > select').on('change', function() { // do });

使用jQuery将事件绑定到它。

答案 2 :(得分:1)

如果我理解正确,可以context "when database is empty" do context "and show is requested" do before { get :show, params: { id: id } } it "flash[:notice] is assigned to 'database is empty!'" expect(flash[:notice]).to eq("database is empty!") end end end context "when database is not empty" do before { FactoryGirl.create(:user) } context "and show is requested" do before { get :show, params: { id: id } } it "does not assign anything to flash[:notice]" expect(flash[:notice]).to be_nil end end end 这样做:

getElementsByTagName

只需指定正确的document.getElementsByTagName("select")[0].onchange = function(){...};

即可

答案 3 :(得分:0)

可能有多种方式,

scanf()

答案 4 :(得分:0)

您可以按标签名称选择元素。 getElementsByTagName并附上活动。

&#13;
&#13;
var elements = document.getElementsByTagName('li');

function printTag() {
    console.log(this);
}

for (var i = 0, len = elements.length; i < len; i++) {
    elements[i].addEventListener("click", printTag, false);
}
&#13;
<div>
  <ul>
    <li>Tab 1</li>
    <li>Tab 2</li>
    <li>Tab 3</li>
  </ul>
</div>
&#13;
&#13;
&#13;