社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Jquery

无法使用jquery向元素添加属性

Kuzma • 4 年前 • 639 次点击  

我有cms,它以这样的方式呈现一个标记,我不能添加任何额外的 id 我是说, class events 到元素。

以这种方式,我必须以编程方式添加它们。任务很简单:

1)。按类名查找元素并将其添加到后续元素中,( img ) 身份证件 名称

(第二章)。添加 onClick 归因于它

(第三章)。执行脚本 onclick公司 (应交换图像和Href的名称( 最多3个图像 ))

JSFiddle

这是一个标记:

<div class="single-image text-center to_change_inner">
   <div class="content">
      <div class="single-image-container">
      <img class="img-responsive" src="https://picsum.photos/200/300">
      </div>
   </div>
</div>

<div>
    <a id="btn-1559300726188">Click</a>
</div>

这是一个jquery 以下内容:

jQuery(function($) {
    element1 = $('.to_change_inner').children('img'); //find() also doesn't work
    element1.id="imgClickAndChange";
    if (element1.addEventListener) { 
      element1.addEventListener("click", changeImage, false);
    } else {
      if (element1.attachEvent) {  
        element1.attachEvent("click", changeImage);
      }
    }
 });    

 function changeImage() {

    if (document.getElementById("imgClickAndChange").src == "https://picsum.photos/200/300") 
    {
        document.getElementById("imgClickAndChange").src = "https://picsum.photos/20/30";
    }
    else 
    {
        document.getElementById("imgClickAndChange").src = "https://picsum.photos/200/300";
    }
}

window.addEventListener('load', function(){
    document.getElementById('btn-1559300726188').setAttribute("onclick", "imgClickAndChange(); return true;");
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46674
 
639 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Muhammad Bilal
Reply   •   1 楼
Muhammad Bilal    4 年前

使用这个:

jQuery(function($) {
    element1 = $('.to_change_inner img');
    element1.attr('id',"imgClickAndChange");

    element1.on('click',function(){changeImage();})
 });    

 function changeImage() {

    if (document.getElementById("imgClickAndChange").src == "https://picsum.photos/200/300") 
    {
        document.getElementById("imgClickAndChange").src = "https://picsum.photos/20/30";
    }
    else 
    {
        document.getElementById("imgClickAndChange").src = "https://picsum.photos/200/300";
    }
}

window.addEventListener('load', function(){
    document.getElementById('btn-1559300726188').setAttribute("onclick", "imgClickAndChange(); return true;");
});

T.J. Crowder
Reply   •   2 楼
T.J. Crowder    4 年前

jquery对象不是dom元素,它们是 dom元素的。

  • 要在集合中的所有元素上设置属性,请使用 attr 以下内容: element1.attr("id", "imgClickAndChange")

  • 要设置属性,请使用 prop 以下内容: element1.prop("id", "imgClickAndChange") ( id 恰好是反映 身份证件 属性; src 同时也是属性和反射属性)。

  • 要添加事件处理程序,请使用 on 以下内容: element1.on("click", changeImage) 是的。

一般来说, 二传手 jquery中的方法在集合中的所有元素上设置它们,并且 吸气剂 方法从 第一 集合中的元素(但也有例外)。

如果出于任何原因需要直接访问集合中的dom元素,可以使用括号表示法(类似于数组)。

更多信息 the API docs the learning center 是的。


根据您的html,这里有一个错误:

element1 = $('.to_change_inner').children('img'); //find() also doesn't work

评论不正确, find 会是你想要的,不是 children 以下内容:

var element1 = $('.to_change_inner').children('img'); // Doesn't work
console.log(element1.length); // 0, no matching elements

var element1 = $('.to_change_inner').find('img'); // Works
console.log(element1.length); // 1, there was a matching element
<div class="single-image text-center to_change_inner">
   <div class="content">
      <div class="single-image-container">
      <img class="img-responsive" src="https://picsum.photos/200/300">
      </div>
   </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这段代码似乎也成了我所说的 The Horror of Implicit Globals ,您需要申报 element1 是的。