用 'e' Jquery 连接字符串
Concatenate String with 'e' Jquery
我在将字符串与 " 和 ' 连接时遇到问题。
我想向Jquery发送一个命令,点击一个div,它有一个我作为参数传递的标题。
需要获取它才能在 jquery 函数中执行:
jQuery('div[title=\"titletoclick\"]').trigger( 'click' );
我有这个功能:
function clickOnMarker() {
let queryString = window.location.search;
let urlParams = new URLSearchParams(queryString);
let spotNameOriginal = urlParams.get('markerName');
let spotName = spotNameOriginal.slice(1,-1);
let elementToClick = "'div[title=\'" + spotName + "'\]'"
jQuery(elementToClick).trigger( 'click' );
}
执行函数时出现错误,因为变量的值为
'div [title =' Sintra Spot ']'
我需要在标题中放置“”而不是''并删除空格TRIM()。
致以最诚挚的问候和感谢
你可以做到:
let elementToClick = 'div[title="' + spotName + '"]'
为什么不像这样简单地连接字符串:'div[title="' + spotName + '"]'
?
$(function() {
clickOnMarker('test');
});
function clickOnMarker(spotName) {
$('div[title="' + spotName + '"]').trigger('click');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div title="test" onclick="alert('test');">test</title>
您可以只使用 grawis / grave accent / backtick 来做到这一点 'a clean way'。
let myArg = 'my-button';
$(`button[title="${myArg}"]`).click(() => {
console.log('clicked');
});
${}
包围的反引号之间的所有内容都将其中的内容放入字符串中。
@编辑
你的思路差不多好了。
let myArg = 'my-button';
$('button[title="' + myArg + '"]').click(() => {
console.log('clicked');
});
当你使用'single quote'时,你只需要在里面使用'double quote'。之前不需要放\
。上面的示例与第一个示例相同。所以你可以做 'hell"o" :)'
和它 returns hell"o" :)
或 "hell'o' :)"
what returns hell'o' :)
.
让我们一个一个解决问题。
修剪字符串可以通过调用String.prototype.trim
来实现,所以我们应该有
[...]
let spotName = spotNameOriginal.slice(1,-1);
// Added trim here
spotName = spotName.trim();
[...]
其次,我们处理引号。由于您查找的字符串在表单中
'div[title="<string here>"]'
,我们可以使用给定的引号...并根据需要转义它们。请记住,要在单引号括起的字符串中转义单引号,我们必须在它们前面加上斜杠,而双引号则不需要转义;双引号括起来的字符串则相反。
因此我们可以写
// let elementToClick = "'div[title=\'" + spotName + "'\]'" OLD SYNTAX
let elementToClick = "'div[title=\"" + spotName + "\"]'";
让我添加一些东西...这种字符串对 jQuery 选择器匹配没有用。正确的不会有封闭的单引号...
因此,正确的语法应该是
// We can use the single quote as delimiter to simplify
let elementToClick = 'div[title="' + spotName + '"]';
(我们也可以通过使用反引号来使用模板字符串,但让我们保持简单)。
加入一切,我们有
function clickOnMarker() {
let queryString = window.location.search;
let urlParams = new URLSearchParams(queryString);
let spotNameOriginal = urlParams.get('markerName');
// Add trim... Concatenating so as to reduce the boilerplate
let spotName = spotNameOriginal.slice(1,-1).trim();
// Build correct selector template
let elementToClick = 'div[title="' + spotName + '"]';
jQuery(elementToClick).trigger( 'click' );
}
我在将字符串与 " 和 ' 连接时遇到问题。
我想向Jquery发送一个命令,点击一个div,它有一个我作为参数传递的标题。
需要获取它才能在 jquery 函数中执行:
jQuery('div[title=\"titletoclick\"]').trigger( 'click' );
我有这个功能:
function clickOnMarker() {
let queryString = window.location.search;
let urlParams = new URLSearchParams(queryString);
let spotNameOriginal = urlParams.get('markerName');
let spotName = spotNameOriginal.slice(1,-1);
let elementToClick = "'div[title=\'" + spotName + "'\]'"
jQuery(elementToClick).trigger( 'click' );
}
执行函数时出现错误,因为变量的值为
'div [title =' Sintra Spot ']'
我需要在标题中放置“”而不是''并删除空格TRIM()。
致以最诚挚的问候和感谢
你可以做到:
let elementToClick = 'div[title="' + spotName + '"]'
为什么不像这样简单地连接字符串:'div[title="' + spotName + '"]'
?
$(function() {
clickOnMarker('test');
});
function clickOnMarker(spotName) {
$('div[title="' + spotName + '"]').trigger('click');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div title="test" onclick="alert('test');">test</title>
您可以只使用 grawis / grave accent / backtick 来做到这一点 'a clean way'。
let myArg = 'my-button';
$(`button[title="${myArg}"]`).click(() => {
console.log('clicked');
});
${}
包围的反引号之间的所有内容都将其中的内容放入字符串中。
@编辑 你的思路差不多好了。
let myArg = 'my-button';
$('button[title="' + myArg + '"]').click(() => {
console.log('clicked');
});
当你使用'single quote'时,你只需要在里面使用'double quote'。之前不需要放\
。上面的示例与第一个示例相同。所以你可以做 'hell"o" :)'
和它 returns hell"o" :)
或 "hell'o' :)"
what returns hell'o' :)
.
让我们一个一个解决问题。
修剪字符串可以通过调用String.prototype.trim
来实现,所以我们应该有
[...]
let spotName = spotNameOriginal.slice(1,-1);
// Added trim here
spotName = spotName.trim();
[...]
其次,我们处理引号。由于您查找的字符串在表单中
'div[title="<string here>"]'
,我们可以使用给定的引号...并根据需要转义它们。请记住,要在单引号括起的字符串中转义单引号,我们必须在它们前面加上斜杠,而双引号则不需要转义;双引号括起来的字符串则相反。
因此我们可以写
// let elementToClick = "'div[title=\'" + spotName + "'\]'" OLD SYNTAX
let elementToClick = "'div[title=\"" + spotName + "\"]'";
让我添加一些东西...这种字符串对 jQuery 选择器匹配没有用。正确的不会有封闭的单引号...
因此,正确的语法应该是
// We can use the single quote as delimiter to simplify
let elementToClick = 'div[title="' + spotName + '"]';
(我们也可以通过使用反引号来使用模板字符串,但让我们保持简单)。
加入一切,我们有
function clickOnMarker() {
let queryString = window.location.search;
let urlParams = new URLSearchParams(queryString);
let spotNameOriginal = urlParams.get('markerName');
// Add trim... Concatenating so as to reduce the boilerplate
let spotName = spotNameOriginal.slice(1,-1).trim();
// Build correct selector template
let elementToClick = 'div[title="' + spotName + '"]';
jQuery(elementToClick).trigger( 'click' );
}