Giter VIP home page Giter VIP logo

Comments (5)

elia avatar elia commented on June 18, 2024

Element#[] has been chosen to access attributes and treat the element(s) as a kind of hash.

Element#at takes indexes starting from 0 like Array#at and I think its better to stay consistent with Array.

I did the same mistake a bunch of times realizing that #[] was for attributes and switching to #at.
If it were the opposite I think I would have ended trying to use #[] for attributes…

(just my 2 cents)

from opal-jquery.

 avatar commented on June 18, 2024

This works in JQuery:

$("a")[2]["href"]

This works too:

$("a")[2].attributes["href"].value

This works in Nokogiri:

doc.css('a')[2]['href']

This is OK too:

doc.css('a')[2].attribute('href').value

from opal-jquery.

elia avatar elia commented on June 18, 2024

Good point, still the problem with jquery is that when we're dealing with it's "power array" we're both operating on a collection and on an element…

when you do

$("a")[2]

you have no more a jquery object, you're accessing the original HTMLElement, opal jquery on the contrary always returns jquery objects (#at) so I think the confusion is sitll, there…

The matter is:

“we want opal-jquery to treat its object primarily as html elements or as arrays?”

I find myself using the mostly as elements, so I'm content with the current behavior

from opal-jquery.

adambeynon avatar adambeynon commented on June 18, 2024

We could have Element#[] work with both ... if a string is passed in, then treat it as an attribute reference/assignment, or if it is a numeric, then treat it as an index like #at does.

Personally, I think Element#[] for attributes is a must, as its a lot nicer/shorter, but there is no reason for not using it for these indexes as well. Thoughts?

from opal-jquery.

elia avatar elia commented on June 18, 2024

Keeping them separate feels better to me, String#[] and Array#[] accept different formats (ranges, regexps, index+length) as well but always (AFAIK) to extract elements

said this that solution can surely work… and could be the least surprising

from opal-jquery.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.