Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jquery
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
夏彬
jquery
Commits
d4a9d455
Commit
d4a9d455
authored
Dec 06, 2010
by
John Resig
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'restrictAttr' of
https://github.com/jitter/jquery
into jitter-restrictAttr
parents
e56d6f67
b50f41a2
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
119 additions
and
67 deletions
+119
-67
attributes.js
src/attributes.js
+71
-64
attributes.js
test/unit/attributes.js
+48
-3
No files found.
src/attributes.js
View file @
d4a9d455
...
@@ -206,7 +206,6 @@ jQuery.fn.extend({
...
@@ -206,7 +206,6 @@ jQuery.fn.extend({
return
elem
.
getAttribute
(
"value"
)
===
null
?
"on"
:
elem
.
value
;
return
elem
.
getAttribute
(
"value"
)
===
null
?
"on"
:
elem
.
value
;
}
}
// Everything else, we just grab the value
// Everything else, we just grab the value
return
(
elem
.
value
||
""
).
replace
(
rreturn
,
""
);
return
(
elem
.
value
||
""
).
replace
(
rreturn
,
""
);
...
@@ -289,6 +288,8 @@ jQuery.extend({
...
@@ -289,6 +288,8 @@ jQuery.extend({
// Try to normalize/fix the name
// Try to normalize/fix the name
name
=
notxml
&&
jQuery
.
props
[
name
]
||
name
;
name
=
notxml
&&
jQuery
.
props
[
name
]
||
name
;
// Only do all the following if this is a node (faster for style)
if
(
elem
.
nodeType
===
1
)
{
// These attributes require special treatment
// These attributes require special treatment
var
special
=
rspecialurl
.
test
(
name
);
var
special
=
rspecialurl
.
test
(
name
);
...
@@ -372,6 +373,12 @@ jQuery.extend({
...
@@ -372,6 +373,12 @@ jQuery.extend({
// Non-existent attributes return null, we normalize to undefined
// Non-existent attributes return null, we normalize to undefined
return
attr
===
null
?
undefined
:
attr
;
return
attr
===
null
?
undefined
:
attr
;
}
}
// Handle everything which isn't a DOM element node
if
(
set
)
{
elem
[
name
]
=
value
;
}
return
elem
[
name
];
}
});
});
})(
jQuery
);
})(
jQuery
);
test/unit/attributes.js
View file @
d4a9d455
...
@@ -4,7 +4,7 @@ var bareObj = function(value) { return value; };
...
@@ -4,7 +4,7 @@ var bareObj = function(value) { return value; };
var
functionReturningObj
=
function
(
value
)
{
return
(
function
()
{
return
value
;
});
};
var
functionReturningObj
=
function
(
value
)
{
return
(
function
()
{
return
value
;
});
};
test
(
"attr(String)"
,
function
()
{
test
(
"attr(String)"
,
function
()
{
expect
(
3
1
);
expect
(
3
7
);
// This one sometimes fails randomly ?!
// This one sometimes fails randomly ?!
equals
(
jQuery
(
'#text1'
).
attr
(
'value'
),
"Test"
,
'Check for value attribute'
);
equals
(
jQuery
(
'#text1'
).
attr
(
'value'
),
"Test"
,
'Check for value attribute'
);
...
@@ -67,6 +67,14 @@ test("attr(String)", function() {
...
@@ -67,6 +67,14 @@ test("attr(String)", function() {
ok
(
jQuery
().
attr
(
"doesntexist"
)
===
undefined
,
"Make sure undefined is returned when no element is there."
);
ok
(
jQuery
().
attr
(
"doesntexist"
)
===
undefined
,
"Make sure undefined is returned when no element is there."
);
equals
(
jQuery
(
document
).
attr
(
"nodeName"
),
"#document"
,
"attr works correctly on document nodes (bug #7451)."
);
equals
(
jQuery
(
document
).
attr
(
"nodeName"
),
"#document"
,
"attr works correctly on document nodes (bug #7451)."
);
var
attributeNode
=
document
.
createAttribute
(
"irrelevant"
),
commentNode
=
document
.
createComment
(
"some comment"
),
textNode
=
document
.
createTextNode
(
"some text"
),
obj
=
{};
jQuery
.
each
(
[
document
,
attributeNode
,
commentNode
,
textNode
,
obj
,
"#firstp"
],
function
(
i
,
ele
)
{
strictEqual
(
jQuery
(
ele
).
attr
(
"nonexisting"
),
undefined
,
"attr works correctly for non existing attributes (bug #7500)."
);
});
});
});
if
(
!
isLocal
)
{
if
(
!
isLocal
)
{
...
@@ -100,7 +108,7 @@ test("attr(Hash)", function() {
...
@@ -100,7 +108,7 @@ test("attr(Hash)", function() {
});
});
test
(
"attr(String, Object)"
,
function
()
{
test
(
"attr(String, Object)"
,
function
()
{
expect
(
24
);
expect
(
30
);
var
div
=
jQuery
(
"div"
).
attr
(
"foo"
,
"bar"
),
var
div
=
jQuery
(
"div"
).
attr
(
"foo"
,
"bar"
),
fail
=
false
;
fail
=
false
;
...
@@ -134,6 +142,25 @@ test("attr(String, Object)", function() {
...
@@ -134,6 +142,25 @@ test("attr(String, Object)", function() {
jQuery
(
"#name"
).
attr
(
'maxLength'
,
'10'
);
jQuery
(
"#name"
).
attr
(
'maxLength'
,
'10'
);
equals
(
document
.
getElementById
(
'name'
).
maxLength
,
'10'
,
'Set maxlength attribute'
);
equals
(
document
.
getElementById
(
'name'
).
maxLength
,
'10'
,
'Set maxlength attribute'
);
var
attributeNode
=
document
.
createAttribute
(
"irrelevant"
),
commentNode
=
document
.
createComment
(
"some comment"
),
textNode
=
document
.
createTextNode
(
"some text"
),
obj
=
{};
jQuery
.
each
(
[
document
,
attributeNode
,
obj
,
"#firstp"
],
function
(
i
,
ele
)
{
var
$ele
=
jQuery
(
ele
);
$ele
.
attr
(
"nonexisting"
,
"foo"
);
equal
(
$ele
.
attr
(
"nonexisting"
),
"foo"
,
"attr(name, value) works correctly for non existing attributes (bug #7500)."
);
});
jQuery
.
each
(
[
commentNode
,
textNode
],
function
(
i
,
ele
)
{
var
$ele
=
jQuery
(
ele
);
$ele
.
attr
(
"nonexisting"
,
"foo"
);
strictEqual
(
$ele
.
attr
(
"nonexisting"
),
undefined
,
"attr(name, value) works correctly on comment and text nodes (bug #7500)."
);
});
//cleanup
jQuery
.
each
(
[
document
,
"#firstp"
],
function
(
i
,
ele
)
{
jQuery
(
ele
).
removeAttr
(
"nonexisting"
);
});
var
table
=
jQuery
(
'#table'
).
append
(
"<tr><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr>"
),
var
table
=
jQuery
(
'#table'
).
append
(
"<tr><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr>"
),
td
=
table
.
find
(
'td:first'
);
td
=
table
.
find
(
'td:first'
);
td
.
attr
(
"rowspan"
,
"2"
);
td
.
attr
(
"rowspan"
,
"2"
);
...
@@ -304,8 +331,26 @@ test("attr('tabindex', value)", function() {
...
@@ -304,8 +331,26 @@ test("attr('tabindex', value)", function() {
});
});
test
(
"removeAttr(String)"
,
function
()
{
test
(
"removeAttr(String)"
,
function
()
{
expect
(
1
);
expect
(
7
);
equals
(
jQuery
(
'#mark'
).
removeAttr
(
"class"
)[
0
].
className
,
""
,
"remove class"
);
equals
(
jQuery
(
'#mark'
).
removeAttr
(
"class"
)[
0
].
className
,
""
,
"remove class"
);
var
attributeNode
=
document
.
createAttribute
(
"irrelevant"
),
commentNode
=
document
.
createComment
(
"some comment"
),
textNode
=
document
.
createTextNode
(
"some text"
),
obj
=
{};
//removeAttr only really removes on DOM element nodes handle all other seperatyl
strictEqual
(
jQuery
(
"#firstp"
).
attr
(
"nonexisting"
,
"foo"
).
removeAttr
(
"nonexisting"
)[
0
].
nonexisting
,
undefined
,
"removeAttr works correctly on DOM element nodes"
);
jQuery
.
each
(
[
document
,
attributeNode
,
obj
],
function
(
i
,
ele
)
{
var
$ele
=
jQuery
(
ele
);
$ele
.
attr
(
"nonexisting"
,
"foo"
).
removeAttr
(
"nonexisting"
);
strictEqual
(
ele
.
nonexisting
,
""
,
"removeAttr works correctly on non DOM element nodes (bug #7500)."
);
});
jQuery
.
each
(
[
commentNode
,
textNode
],
function
(
i
,
ele
)
{
$ele
=
jQuery
(
ele
);
$ele
.
attr
(
"nonexisting"
,
"foo"
).
removeAttr
(
"nonexisting"
);
strictEqual
(
ele
.
nonexisting
,
undefined
,
"removeAttr works correctly on non DOM element nodes (bug #7500)."
);
});
});
});
test
(
"val()"
,
function
()
{
test
(
"val()"
,
function
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment